0

保存ボタンを押した後に自動的に結果ページに移動するにはどうすればよいですか? 保存ボタンを押した後、私のアプリケーションは同じページにとどまっているようです。以下にソースコードを添付します

詳細フォーム.Java

public class DetailForm extends Activity {
EditText name = null;
EditText address = null;
EditText telephone = null;
EditText details = null;
NameCardHelper helper = null;
String namecardId = null;
TextView location = null;
LocationManager locMgr = null;
double latitude = 0.0d;
double longitude = 0.0d;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detail_form);

    locMgr = (LocationManager) getSystemService(LOCATION_SERVICE);

    helper = new NameCardHelper(this);

    name = (EditText) findViewById(R.id.name);
    address = (EditText) findViewById(R.id.address);
    telephone = (EditText) findViewById(R.id.telephone);
    details = (EditText) findViewById(R.id.details);
    location = (TextView) findViewById(R.id.location);

    namecardId = getIntent().getStringExtra(NameCardList.ID_EXTRA);
    if (namecardId != null) {
        load();
    }
}

@Override
public void onPause() {
    save();
    super.onPause();
}

@Override
public void onDestroy() {
    helper.close();
    locMgr.removeUpdates(onLocationChange);
    super.onDestroy();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    new MenuInflater(this).inflate(R.menu.details_option, menu);
    return (super.onCreateOptionsMenu(menu));
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    if (namecardId == null) {
        menu.findItem(R.id.location).setEnabled(false);
        menu.findItem(R.id.map).setEnabled(false);
    }
    return (super.onPrepareOptionsMenu(menu));
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.location) {

        locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
                onLocationChange);
        return (true);

        } else if (item.getItemId() == R.id.map) {
            Intent i = new Intent(this, NameCardMap.class);
            i.putExtra(NameCardMap.EXTRA_LATITUDE, latitude);
            i.putExtra(NameCardMap.EXTRA_LONGITUDE, longitude);
            i.putExtra(NameCardMap.EXTRA_NAME, name.getText().toString());
            startActivity(i);
            return (true);
        } else if (item.getItemId() == R.id.call) {
             Intent i = new Intent(Intent.ACTION_CALL);

                String p = "tel:" + telephone.getText();
                i.setData(Uri.parse(p));
                startActivity(i);
        } else if (item.getItemId() == R.id.sms) {

            Intent smsIntent = new Intent(Intent.ACTION_SENDTO);
            smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
            smsIntent.setType("vnd.android-dir/mms-sms");
            smsIntent.setData(Uri.parse("sms:" + telephone.getText()));
            startActivity(smsIntent);
        } else if (item.getItemId() == R.id.delete) {

            helper.delete(namecardId);

            startActivity(new Intent(this, NameCardList.class));
            return (true);
        }
    return true;
        }

private boolean isNetworkAvailable() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);

    NetworkInfo info = cm.getActiveNetworkInfo();
    return (info != null);
}

private void load() {
    Cursor c = helper.getById(namecardId);
    c.moveToFirst();

    name.setText(helper.getName(c));
    address.setText(helper.getAddress(c));
    telephone.setText(helper.getTelephone(c));
    details.setText(helper.getDetails(c));

    latitude = helper.getLatitude(c);
    longitude = helper.getLongitude(c);
    location.setText(String.valueOf(latitude) + ", "
            + String.valueOf(longitude));

    c.close();
}

private void save() {
    if (name.getText().toString().length() > 0) {

        if (namecardId == null) {
            helper.insert(name.getText().toString(), address.getText()
                    .toString(), telephone.getText().toString(),
                    details.getText().toString());
        } else {
            helper.update(namecardId, name.getText().toString(), address
                    .getText().toString(), telephone.getText().toString(),
                    details.getText().toString());
        }
    }

}

LocationListener onLocationChange = new LocationListener() {
    public void onLocationChanged(Location fix) {
        helper.updateLocation(namecardId, fix.getLatitude(),
                fix.getLongitude());
        location.setText(String.valueOf(fix.getLatitude()) + ", "
                + String.valueOf(fix.getLongitude()));
        locMgr.removeUpdates(onLocationChange);

        Toast.makeText(DetailForm.this, "Location saved", Toast.LENGTH_LONG)
                .show();
    }

    public void onProviderDisabled(String provider) {
        // required for interface, not used
    }

    public void onProviderEnabled(String provider) {
        // required for interface, not used
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
        // required for interface, not used
    }
};
}
4

3 に答える 3

0

結果ページの名前が ResultActivity だとします

  Intent intent = new Intent(this, ResultActivity.class);

  startActivity(intent);

結果アクティビティがマニフェストにあることを確認してください:) ...保存ボタンのクリックリスナーで上記のコードを使用します

ダニエルは正しいです。最初に保存ボタンのクリック リスナーを設定する必要があります。たとえば、「btn」は xml のボタンの ID です。

  Button btn = (Button) findViewById(R.id.btn);   
  btn .setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          Intent intent = new Intent(this, ResultActivity.class);
          startActivity(intent);

        }
    });
于 2013-01-24T08:10:31.800 に答える
0

保存ボタンはどこにありますか? それについての言及はないようです。

xml 内のボタンから (onClick 経由で) 対話するパブリック メソッドを用意するか、ソース内のボタンにクリック コールバックを追加する必要があります。どちらも行っていないようです。そのため、XML にボタンがある場合、現時点ではどのアクションにも関連付けられていません。

于 2013-01-24T08:13:41.887 に答える
0

そのボタンに android:Onclick="save" などのxmlページでonClickを指定した場合、それは機能します。そうでない場合は、アクティビティクラスでボタンをバインドしてアクションリスナーを追加できます

于 2013-01-24T08:23:43.897 に答える