2012-12-25 8 views
6

メリークリスマスとハッピーホリデーみんな!クリックリスナーをタイトルバーに追加する

デフォルトのタイトルバーの左側に表示されるイメージアイコンにリスナーを設定しようとしていますが、これまでのところ運がありません。

ここに私の活動ののonCreateです:

@Override public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    super.onCreate(savedInstanceState); 
    findViewById(Window.FEATURE_LEFT_ICON).setOnClickListener(new OnClickListener() { 
     @Override public void onClick(View v) { 
      System.out.println("It works!"); 
     } 
    }); 
} 

任意の提案ですか?私は答えが "それは不可能"ではないことを期待しています:)

+2

? –

+0

あなたは[このタイトルバー](http://sree.cc/wp-content/uploads/2011/02/image1.jpg)について話していますか?もしそうなら、あなたはActionBarを実装することに目を向けるべきです、タイトルバーはUIのイディオムとしてかなり廃止されました。 – dmon

+0

はい、あなたはActionBarを使用し、あなたのアクティビティの 'onOptionsItemSelected()'メソッドを実装すると思います。私はActionBar上のアプリアイコンのIDは 'android.R.id.home' – Karakuri

答えて

4

左のアイコンのidがないようですが、古典的なタイトルバーには、利用可能なIDがあります:android.R.id.titleここにありますこのIDを使用するサンプルアクティビティrequestWindowFeature(Window.FEATURE_LEFT_ICON);は、テーマに関係なく古典的なタイトルバーを強制するはずです。

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    setContentView(R.layout.activity_main); 
    getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.ic_launcher); 
    View v = findViewById (android.R.id.title); 
    v.setClickable(true); 
    v.setOnClickListener(new OnClickListener() { 
     @Override public void onClick(View v) { 
      Toast.makeText(MainActivity.this, "Works!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
} 

基本的には、これが何をするか、それがタイトルバー(android.R.id.title)のidはそれにonClickListenerを割り当て見つけです。

これはではありませんと働くActionBar s、古典的なウィンドウタイトルバーのみです。

+0

あなたは実際にこれを電話で実行しようとしましたか?私はGalaxy S3にヌルポインタを取得しています。 –

+0

はい、4.0.4。 Theme.Black/Theme.Lightのような古典的なテーマが必要です。新しいHoloテーマはActionBarを使用します。これは、言及された他の人のように、異なる実装を使用します。 –

1

ActionBarを使用する必要があります。 Androidのバージョンが3.0未満の場合は、ActionBarSherlockを使用してください。アイコンをクリック可能にするには、ActionBar API Docs(下のリンクを参照)を参照してください。それは非常に簡単です、あなたはちょうどその動作をアクティブにして、特別なitem-idを持つメニュー項目のように動作します。あなたがアクションバーを使用していないのはなぜ

関連する問題