145

リストビューを使用したアクティビティがあります。ユーザーがアイテムをクリックすると、アイテム「ビューア」が開きます。

List1.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

        Intent nextScreen = new Intent(context,ServicesViewActivity.class);
        String[] Service = (String[])List1.getItemAtPosition(arg2);

        //Sending data to another Activity
        nextScreen.putExtra("data", datainfo);
        startActivityForResult(nextScreen,0);
        overridePendingTransition(R.anim.right_enter, R.anim.left_exit);
    }
});

これは正常に機能しますが、アクションバーでアプリ アイコンの横にある戻る矢印がアクティブになりません。何か不足していますか?

4

14 に答える 14

277

Selvin はすでに正しい答えを投稿しています。ここでは、きれいなコードでのソリューション:

public class ServicesViewActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // etc...
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }

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

この関数NavUtils.navigateUpFromSameTask(this)では、AndroidManifest.xml ファイルで親アクティビティを定義する必要があります

<activity android:name="com.example.ServicesViewActivity" >
    <meta-data
     android:name="android.support.PARENT_ACTIVITY"
     android:value="com.example.ParentActivity" />
</activity>

詳しくはこちらをご覧ください。

于 2012-11-20T10:43:33.290 に答える
181

アクティビティで ActionBar ホーム ボタンが有効になっていることを確認します。

アンドロイド、API 5+:

@Override
public void onBackPressed() {
     ...
     super.onBackPressed();
}

ActionBarSherlock および App-Compat、API 7+:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    ...
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

アンドロイド、API 11+:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    ...
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

MainActivity拡張する例ActionBarActivity:

public class MainActivity extends ActionBarActivity {
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Back button
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home: 
            // API 5+ solution
            onBackPressed();
            return true;

        default:
            return super.onOptionsItemSelected(item);
        }
    }
}

このようにして、必要なすべてのアクティビティにバックプレスを設定できます。

アンドロイド、API 16+:

http://developer.android.com/training/implementing-navigation/ancestral.html

AndroidManifest.xml:

<application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- The meta-data element is needed for versions lower than 4.1 -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

MainActivity拡張する例ActionBarActivity:

public class MainActivity extends ActionBarActivity {
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Back button
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        // Respond to the action bar's Up/Home button
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
于 2012-07-29T14:43:48.720 に答える
11

AndroidManifest ファイル:

    <activity android:name=".activity.DetailsActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="br.com.halyson.materialdesign.activity.HomeActivity" />
    </activity>

DetailsActivity に追加:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);   
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

それは仕事です:]

于 2015-04-17T07:30:59.823 に答える
11

OnCreateメソッドにこれを追加します。

if (getSupportActionBar() != null) {
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

次に、このメソッドを追加します。

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}
于 2019-03-02T21:54:26.547 に答える
7

Android の注釈:

@OptionsItem(android.R.id.home)
void homeSelected() {
    onBackPressed();
}

ソース: https://github.com/excilys/androidannotations

于 2014-07-22T07:47:18.810 に答える
6

onSupportNavigateUp()はそうする最も簡単で最良の方法だと思います

以下のstackoverflowの回答で完全なソリューションを確認してください。リンク:完全なコードについては、ここをクリックしてください

于 2016-05-12T11:21:25.380 に答える
1
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

新しい API のinonCreatedメソッド。

于 2019-01-08T18:48:21.017 に答える