2011-01-16 2 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> 

내 된 .java 파일의 일부가 지금

... 
@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); 
    } 
} 
... 

문제가 나는 것을 볼 수 있다는 컨텍스트 메뉴가 닫히기 바로 전에 작은 상자에 녹색 눈금이 튀어 나오지만 다시 메뉴를 열면 눈금이 사라집니다. 이제 진드기가 상자에 남아 있지 않은 이유는 알 수 없습니다. 누군가 내게 힌트를주고 내가 뭘 잘못하고 있는지 말할 수 있다면 좋을 것 같습니다. 장 - 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

좋습니다. 이 문제를 해결하기에 충분할 것입니다. 대단히 감사합니다. 이것은 빨랐다. –

관련 문제