2013-03-06 6 views
0

안녕하세요,이 사람이 내 코드입니다. 메뉴는 내 휴대 전화에서 완벽하게 작동합니다 (Android 2.3). 하지만 내 태블릿 (Android 4.0)에서는 아이콘이 표시되지 않습니다. 메뉴가 제대로 작동합니다. 누군가 나를 도울 수 있습니까? 왜 이런 일이 생길까요? AndroidManifest.xmlTheme_Black_NoTitleBar을 사용하고 있습니다.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, hdpi에 동일한 아이콘을 붙여 특히 xhdpi 정제의 경우했는지 확인합니다.

해당 폴더에 모든 아이콘 버전이있는 경우 menu.xml 파일을 게시하십시오.

0

내 태블릿 (Android 4.0)에서는 아이콘이 표시되지 않습니다.

작업 표시 줄의 오버플로 메뉴에있는 아이콘은 표시하지 않아야합니다. 오버플로 메뉴는 텍스트 전용입니다.

0

Drawble-ldpi, mdpi, hdpi, xhdpi 폴더는 자신의 파일을 보유해야하므로 같은 이름의 아이콘을 다른 폴더에 넣어야합니다. 나는 당신의 코드가 벼룩 오류 만 잘못되었다고 생각합니다. 또한 다른 시각적 이미지를 만들려면 레이아웃 파일이 같은 이름의 다른 드로어 블 폴더에 있어야합니다.

관련 문제