2011-01-16 12 views
1

をチェックしたままにしないでください。 私はdeveloper.android.comのDev Guideを読んでいました。そして、その部分がコンテキストメニューになるまで、すべてうまくいっていました。 私はいくつかのチェック可能な項目を含むサブメニューを持つコンテキストメニューを持っていました。だから、サブメニューとアイテムをmenu.xmlに、item.setchecked(true)メソッドをonContextItemSelected(...)メソッドに追加しました。チェックし、コンテキストメニューの項目は、私の質問は、おそらく非常に愚かなものになると私は、このために謝罪ので、私はこのフォーラムへとアンドロイドの開発自体に新たなんだ

menu.xml

<?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/info" 
     android:title="@string/info" /> 
    <item android:title="@string/change"> 
     <menu> 
      <item android:id="@+id/checkable_item1" 
       android:checked="true" 
       android:checkable="true" 
       android:title="@string/hello"/> 
      <item android:id="@+id/checkable_item2" 
       android:checkable="true" 
       android:title="@string/moin"/> 
      <item android:id="@+id/checkable_item3" 
       android:checkable="true" 
       android:title="@string/aloha"/> 
     </menu> 
    </item> 
</menu> 

... 
@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater1 = getMenuInflater(); 
    inflater1.inflate(R.menu.context_menu, menu); 
} 
@Override 
public boolean onContextItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()) 
    { 
    case R.id.checkable_item1: 
     if(item.isChecked()) item.setChecked(false); 
     else item.setChecked(true); 
     return true; 
    case R.id.checkable_item2: 
     if(item.isChecked()) item.setChecked(false); 
     else item.setChecked(true); 
     return true; 
    case R.id.checkable_item3: 
     if(item.isChecked()) item.setChecked(false); 
     else item.setChecked(true); 
     return true; 
    default: 
     return super.onContextItemSelected(item); 
    } 
} 
... 

私の.javaファイルの一部は、今の問題は、私は、メニューを開いてチェック可能なアイテムのいずれかを押すと、私がいることを確認できたときにということですコンテキストメニューが閉じられる直前に小さな箱に緑色のポップアップが表示されますが、もう一度ポップアップメニューが表示されます。 今、私は本当にティックがボックスに収まらない理由を知らない。 誰かが私にヒントを与えて、私が間違っていることを教えてもらえるといいですね。 ジャンclaude91が

答えて

0

私は自分自身を試していません

見越し

であなたに感謝するが、私はここにきちんと説明を読めば(http://developer.android.com/reference/android/app/Activity。 HTML#onCreateContextMenu(android.view.ContextMenu、android.view.View、android.view.ContextMenu.ContextMenuInfo))、 レイアウトリソースは、メニューが作成されるたびに呼び出されます。それは、「メソッドの復帰後のメニューを保持するために安全ではない」ですので、あなたは/未チェックチェックを設定すると、選択した項目を処理し、どこかにその選択を持続し、その後menuInfoとのonCreateに選択可能な項目の現在の状態を渡す必要がありますその情報を使って

そうでない場合は、メニューがデフォルト設定(menu.xml)に基づいたびに再作成されます。すべての

+0

オーケー最初は、あなたの答えをありがとうございました。今私はすでに私がアンドロイドのために開発したばかりなので、選択肢を永続化して状態をonCreateメソッドに渡す方法や、これを行う方法や説明を与えるリンクを私に教えてください私が調べる必要のあるメソッドの名前?それは本当に素晴らしいでしょう。 –

+0

@ jean-claude:あなたは、プリファレンスと共有プリファレンスというものについて読む必要があります。リンク:http://developer.android.com/reference/android/preference/package-summary.htmlとhttp://developer.android.com/reference/android/content/SharedPreferences.html – user432209

+0

すべての権利。この問題を解決するのに十分なはずです。本当にありがとう。これは速かった。 –

関連する問題