11

MainActivity と SettingsActivity の 2 つのアクティビティを持つアプリがあります。MainActivity には、単一の [設定] メニュー項目を含むメニューがあります。このメニュー項目をクリックすると、インテントで SettingsActivity が起動されます。アクティビティの開始後、左上隅の [戻る] ボタンをクリックしても何も起こりません。インテントを使用してアクティビティを開始したので、アクティビティ スタックは自動的に管理されると思いました。MainActivity に戻りたい。この仮定は間違っていますか?

MainActivity.onMenuItemSelected

public boolean onMenuItemSelected(int featureId, MenuItem item) {
    int itemID = item.getItemId();

    if(itemID == R.id.settings) {
        Intent intent = new Intent(this, SettingsActivity.class);
        startActivity(intent);
    }

    return true;
}

設定アクティビティ

public class SettingsActivity extends PreferenceActivity {

    public static final String TEST = "test";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }
}
4

2 に答える 2

38

内部では、戻るためにアクションバーの左上隅にある戻るボタンを有効にするためSettingsActivityにオーバーライドする必要があります。onOptionsItemSelectedクリック時に何をする必要があるかは、それ自体ではわかりません。ケース内では、android.R.id.homeを呼び出すだけfinish()です。MainActivityこれで現在のアクティビティが終了し、アクティビティを開始した場所に戻ります。例えば:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            this.finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

完全を期すために、ホームボタンを有効にするには、onCreate()ofに次を追加できますSettingsActivity

getActionBar().setDisplayHomeAsUpEnabled(true);

setDisplayHomeAsUpEnabled()のドキュメントに従って

It is to show the user that selecting home will return one level up rather than to the top level of the app.

お役に立てれば。

于 2013-07-14T20:22:07.827 に答える
2

これらの行を OnCreate メソッドに追加するだけです

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

このメソッドをオーバーライドして、戻るボタンに機能を追加します。

   @Override
public boolean onOptionsItemSelected(MenuItem item)
{
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    } else if(id==android.R.id.home)
    {
     finish();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

それがあなたを助けることを願っています

于 2016-04-26T15:11:25.280 に答える