web-dev-qa-db-ja.com

ホームボタンのアクションバーのonClickリスナー

アクションバーのホームボタンにカスタムonClickListenerを実装するにはどうすればよいですか?

既にgetSupportActionBar().setDisplayHomeAsUpEnabled(true);を実行しましたが、ホームボタンがクリックされた場合に備えて、ユーザーを特定のアクティビティにリダイレクトしたいと考えています。

私が試した:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case Android.R.id.home:
            item.setOnMenuItemClickListener(new OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                    Intent i = new Intent();
                    i.setClass(BestemmingActivity.this, StartActivity.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                    return true;
                }
            });
        default:
            return super.onOptionsItemSelected(item);
        }
    }

ただし、onMenuItemClickには入りません。

基本的に、 this link のように行われますが、それでもリスナーには入りません。

80
noloman

修正済み:setOnMenuItemClickListenerを使用する必要はありません。ボタンを押すだけで、インテントを通じてアクティビティを作成して起動します。

あなたの助けをありがとう!

7
noloman

supportActionBar.setHomeButtonEnabled(true);を設定した後、 actionBarSherlock を使用します
onMenuItemSelectedメソッドをオーバーライドできます。

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {

    int itemId = item.getItemId();
    switch (itemId) {
    case Android.R.id.home:
        toggle();

        // Toast.makeText(this, "home pressed", Toast.LENGTH_LONG).show();
        break;

    }

    return true;
}

私はこの仕事があなたのために~~~幸運を願っています

110
lynn8570

他の誰かがソリューションを必要とする場合

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == Android.R.id.home) {
        onBackPressed();  return true;
    }

    return super.onOptionsItemSelected(item);
}
104
Saad Mahmud

次のコードが動作するアクションバーを指定したシステムを使用する場合

getActionBar().setHomeButtonEnabled(true);

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {

    int itemId = item.getItemId();
    switch (itemId) {
    case Android.R.id.home:
      //do your action here.
        break;

    }

    return true;
}
21
raju

ICSで実行する場合は、ホームアクションを明示的に有効にする必要があります。 ドキュメント から:

注:アイコンを使用してホームアクティビティに移動する場合、Android 4.0(APIレベル14)で始まることに注意してください。setHomeButtonEnabled(true)を呼び出して、アクションアイテムとしてアイコンを明示的に有効にする必要があります(以前のバージョンでは、アイコンはデフォルトでアクション項目として有効にされていました)。

3
Nikolay Elenkov

OnClickListenerのアクションバーをカスタマイズする最良の方法は、onSupportNavigateUp()です。

このコードは役に立ちます コードを支援するためのリンク

2
Naeem Ibrahim

起こっていることの半分の部分で答えます。 manifest.xmlシステムの親アクティビティセットが親アクティビティに移動するときに、onOptionsItemSelectedhomeAsUpボタンを制御しない場合。アクティビティタグで次のように使用します。

<activity ... >
<meta-data
Android:name="Android.support.PARENT_ACTIVITY"
Android:value="com.activities.MainActivity" /> 
</activity>
1
David