2013-03-06 6 views
0

Привет, Все, это мой код. Меню прекрасно работает на моем телефоне (Android 2.3). Но на моем планшете (Android 4.0) он не отображает значок. Меню прекрасно работает. Может кто-нибудь мне помочь? Почему это происходит? Я использую Theme_Black_NoTitleBar в AndroidManifest.xml.Значок меню Android не отображается на планшете

public final class IntentsDemoActivity extends Activity implements 
     OnItemClickListener { 

    public static final int ABOUT = 0; 
    public static final int INFO = 1; 
    public static final int WEBSITE = 2; 

    // This is the value of Intent.EXTRA_LOCAL_ONLY for API level 11 and above. 
    private static final String EXTRA_LOCAL_ONLY = "android.intent.extra.LOCAL_ONLY"; 
    private static final String VIDEO_ID = "-Uwjt32NvVA"; 
    private static final String PLAYLIST_ID = "PLF3DFB800F05F551A"; 
    private static final String USER_ID = "Google"; 
    private static final int SELECT_VIDEO_REQUEST = 1000; 

    private List<DemoListViewItem> intentItems; 

    public boolean onCreateOptionsMenu(android.view.Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     menu.add(0, ABOUT, 0, "About").setIcon(R.drawable.about); 
     menu.add(0, INFO, 0, "Info").setIcon(R.drawable.info); 
     menu.add(0, WEBSITE, 0, "Website").setIcon(R.drawable.website); 
     return true; 
    } 

    public boolean onMenuItemSelected(int featureId, MenuItem item) { 
     switch (item.getItemId()) { 
     case ABOUT: 
      Toast.makeText(IntentsDemoActivity.this, "About", Toast.LENGTH_SHORT).show(); 
      Uri uri = Uri.parse("https://www.google.com/about); 
      Intent it = new Intent(Intent.ACTION_VIEW,uri); 
      startActivity(it); 
      return true; 

      case PAGE: 
      Toast.makeText(IntentsDemoActivity.this, "Info", Toast.LENGTH_SHORT).show(); 
      Uri uri = Uri.parse("https://www.google.com/info"); 
      Intent it = new Intent(Intent.ACTION_VIEW,uri); 
      startActivity(it); 
      return true; 
      case WEBSITE: 
      Toast.makeText(IntentsDemoActivity.this, "Webiste", Toast.LENGTH_SHORT).show(); 
      Uri uri1 = Uri.parse("http://www.google.com/"); 
      Intent it1 = new Intent(Intent.ACTION_VIEW,uri1); 
      startActivity(it1); 
      return true; 

      } 
      return false; 
     } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.intents_demo); 

     intentItems = new ArrayList<DemoListViewItem>(); 
     intentItems.add(new IntentItem("X", IntentType.X)); 
     intentItems.add(new IntentItem("Play Video", IntentType.PLAY_VIDEO)); 
     intentItems.add(new IntentItem("Open Playlist", 
       IntentType.OPEN_PLAYLIST)); 
     intentItems.add(new IntentItem("Play Playlist", 
       IntentType.PLAY_PLAYLIST)); 
     intentItems.add(new IntentItem("Open User", IntentType.OPEN_USER)); 
     intentItems.add(new IntentItem("Open Search Results", 
       IntentType.OPEN_SEARCH)); 
     intentItems 
       .add(new IntentItem("Upload Video", IntentType.UPLOAD_VIDEO)); 

     ListView listView = (ListView) findViewById(R.id.intent_list); 
     DemoArrayAdapter adapter = new DemoArrayAdapter(this, 
       R.layout.list_item, intentItems); 
     listView.setAdapter(adapter); 
     listView.setOnItemClickListener(this); 

     TextView youTubeVersionText = (TextView) findViewById(R.id.youtube_version_text); 
     String version = YouTubeIntents.getInstalledYouTubeVersionName(this); 
     if (version != null) { 
      String text = String.format(
        getString(R.string.youtube_currently_installed), version); 
      youTubeVersionText.setText(text); 
     } else { 
      youTubeVersionText 
        .setText(getString(R.string.youtube_not_installed)); 
     } 
    } 

    public boolean isIntentTypeEnabled(IntentType type) { 
     switch (type) { 
     case PLAY_VIDEO: 
      return YouTubeIntents.canResolvePlayVideoIntent(this); 
     case OPEN_PLAYLIST: 
      return YouTubeIntents.canResolveOpenPlaylistIntent(this); 
     case PLAY_PLAYLIST: 
      return YouTubeIntents.canResolvePlayPlaylistIntent(this); 
     case OPEN_SEARCH: 
      return YouTubeIntents.canResolveSearchIntent(this); 
     case OPEN_USER: 
      return YouTubeIntents.canResolveUserIntent(this); 
     case UPLOAD_VIDEO: 
      return YouTubeIntents.canResolveUploadIntent(this); 
     } 

     return false; 
    } 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 
      long id) { 
     IntentItem clickedIntentItem = (IntentItem) intentItems.get(position); 

     Intent intent; 
     switch (clickedIntentItem.type) { 
     case X: 
      // This will load a picker view in the users' gallery. 
      // The upload activity is started in the function onActivityResult. 
      intent = new Intent(Intent.ACTION_PICK, null).setType("video/*"); 
      intent.putExtra(EXTRA_LOCAL_ONLY, true); 
      startActivityForResult(intent, SELECT_VIDEO_REQUEST); 
      break; 

     case PLAY_VIDEO: 
      intent = YouTubeIntents.createPlayVideoIntentWithOptions(this, 
        VIDEO_ID, true, false); 
      startActivity(intent); 
      break; 
     case OPEN_PLAYLIST: 
      intent = YouTubeIntents.createOpenPlaylistIntent(this, PLAYLIST_ID); 
      startActivity(intent); 
      break; 
     case PLAY_PLAYLIST: 
      intent = YouTubeIntents.createPlayPlaylistIntent(this, PLAYLIST_ID); 
      startActivity(intent); 
      break; 
     case OPEN_SEARCH: 
      intent = YouTubeIntents.createSearchIntent(this, USER_ID); 
      startActivity(intent); 
      break; 
     case OPEN_USER: 
      intent = YouTubeIntents.createUserIntent(this, USER_ID); 
      startActivity(intent); 
      break; 
     case UPLOAD_VIDEO: 
      // This will load a picker view in the users' gallery. 
      // The upload activity is started in the function onActivityResult. 
      intent = new Intent(Intent.ACTION_PICK, null).setType("video/*"); 
      intent.putExtra(EXTRA_LOCAL_ONLY, true); 
      startActivityForResult(intent, SELECT_VIDEO_REQUEST); 
      break; 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, 
      Intent returnedIntent) { 
     if (resultCode == RESULT_OK) { 
      switch (requestCode) { 
      case SELECT_VIDEO_REQUEST: 
       Intent intent = YouTubeIntents.createUploadIntent(this, 
         returnedIntent.getData()); 
       startActivity(intent); 
       break; 
      } 
     } 
     super.onActivityResult(requestCode, resultCode, returnedIntent); 
    } 

    private enum IntentType { 
     X, PLAY_VIDEO, OPEN_PLAYLIST, PLAY_PLAYLIST, OPEN_USER, OPEN_SEARCH, UPLOAD_VIDEO; 
    } 

    private final class IntentItem implements DemoListViewItem { 

     public final String title; 
     public final IntentType type; 

     public IntentItem(String title, IntentType type) { 
      this.title = title; 
      this.type = type; 
     } 

     @Override 
     public String getTitle() { 
      return title; 
     } 

     @Override 
     public boolean isEnabled() { 
      return isIntentTypeEnabled(type); 
     } 

     @Override 
     public String getDisabledText() { 
      return getString(R.string.intent_disabled); 
     } 
    } 
} 

ответ

0

Убедитесь, что вы вставили те же иконки в вытяжке все папки, т.е. ldpi, MDPI, ИПЧР и особенно xhdpi в случае таблеток.

Заполните файл menu.xml, если у вас есть все версии значков в соответствующих папках.

0

Но на моем планшете (Android 4.0) он не отображает значок.

Нельзя отображать значок, если он находится в меню переполнения панели действий. Меню переполнения является текстовым.

0

Файлы Drawble-ldpi, mdpi, hdpi, xhdpi должны содержать свои собственные файлы, поэтому поместите значок с тем же именем в разные папки. Я думаю, что ваш код не ошибается, есть только ошибка блохи. Также ваши файлы макета должны быть в разных папках с одинаковым именем, если вы создаете разные визуальные ..

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