2013-03-29 3 views
1

У меня есть четыре пункта меню, и я хочу, чтобы они были выделены при выборе. Я пытался использовать item.setIcon(), он отлично работает, но когда я выбираю другой пункт меню, предыдущий также выделяется. Есть ли возможность сделать выделение только текущего выделения?Как выделить пункт меню на выбор?

Это мой menu.xml

<item 
    android:id="@+id/home" 
    android:showAsAction="always" 
    android:title="Home" 
    android:icon="@drawable/home72"/> 
<item 
    android:id="@+id/location" 
    android:showAsAction="always" 
    android:title="Locations" 
    android:icon="@drawable/locations72"/> 
<item 
    android:id="@+id/preQualify" 
    android:showAsAction="always" 
    android:title="Pre-Qualify" 
    android:icon="@drawable/prequalify72"/> 
<item 
    android:id="@+id/products" 
    android:showAsAction="always" 
    android:title="Products" 
    android:icon="@drawable/products72"/> 

Это мой Java файл:

public boolean onOptionsItemSelected(MenuItem item) { 

    switch(item.getItemId()){ 

    case R.id.home: 
     //item.setIcon(icon); 
     final ProgressDialog homeDialog = new ProgressDialog(this); 
     homeDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     homeDialog.setCancelable(false); 

     storeLocator = (WebView) findViewById(R.id.storeLocator); 
     storeLocator.setWebViewClient(new WebViewClient()); 
     storeLocator.getSettings().setJavaScriptEnabled(true); 
     //storeLocator.getSettings().setBuiltInZoomControls(true); 
     storeLocator.setWebChromeClient(new WebChromeClient() { 
      public void onProgressChanged(WebView view, int progress) { 
       homeDialog.show(); 
       homeDialog.setProgress(0); 
       activity.setProgress(progress * 1000); 

       homeDialog.incrementProgressBy(progress); 

       if(progress == 100 && homeDialog.isShowing()) 
        homeDialog.dismiss(); 
      } 
     }); 
     storeLocator.loadUrl("xxxx"); 
     //item.setIcon(R.drawable.homew); 
     /*Toast.makeText(this, "Home selected", Toast.LENGTH_SHORT) 
     .show();*/ 
     break; 

    case R.id.location: 
     final ProgressDialog locationDialog = new ProgressDialog(this); 
     locationDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     locationDialog.setCancelable(false); 

     storeLocator = (WebView) findViewById(R.id.storeLocator); 
     storeLocator.setWebViewClient(new WebViewClient()); 
     storeLocator.getSettings().setJavaScriptEnabled(true); 
     //storeLocator.getSettings().setBuiltInZoomControls(true); 
     storeLocator.setWebChromeClient(new WebChromeClient() { 
      public void onProgressChanged(WebView view, int progress) { 
       locationDialog.show(); 
       locationDialog.setProgress(0); 
       activity.setProgress(progress * 1000); 

       locationDialog.incrementProgressBy(progress); 

       if(progress == 100 && locationDialog.isShowing()) 
        locationDialog.dismiss(); 
      } 
     }); 
     storeLocator.loadUrl("xxxx"); 

     //item.setIcon(R.drawable.lcoationw); 
     /*Toast.makeText(this, "Location selected", Toast.LENGTH_SHORT) 
     .show();*/ 
     break; 
} 

ответ

2

Есть ли возможность сделать только текущий выбор выделен?

Следите за тем, что вы выделили. Когда вы выделите его, удалите выделение из предыдущего.

+0

как отследить выбор? Я не могу понять это! –

+2

@AnilM: Сохраните последний элемент «MenuItem» в элементе данных вашей активности. – CommonsWare

Смежные вопросы