2013-08-15 1 views
0

안녕하세요, 간단한 애플리케이션 (미디어 플레이어)을 시도하고 있습니다. 몇 가지 질문이있어. 나는 이미 menu.xml 파일에있는 3 개의 버튼이있는 메뉴를 만들었고 MainActivity.java에서 3 개의 탭을 만들었습니다. 그리고 내 질문은 : 해당 항목 (단추 및 탭)을 모든 활동에 적용하는 방법은 무엇입니까? MainActivity에서 코드를 붙여야합니까? (addTab, override 함수 등) 내 의견으로는 다른 방법이 있어야합니다. 더 무엇입니까 : 나는 아픈 tab1, listview apears 아래, 탭 2를 클릭하면 그 아래 그리드 뷰 apear 때 그것을하고 싶습니다. 내 3 개의 탭에 대해 3 가지 다른 레이아웃과 3 가지 다른 활동을 수행해야합니까? 또는 레이아웃 1 개와 모든 항목 1 개의 활동? 어떻게 보일까.아래 작업 표시 줄 탭과 listview/gridview가있는 Android 애플리케이션

나는 이미 새로운 활동을 시작하면서 그 새 활동의 onCreate 기능이 listview (tab2 gridview)에 대한 새 레이아웃을로드하지만이 경우에는 내 actionbar 및 탭이 누락되었습니다. (actionbar

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<!-- Search, should appear as action button --> 
<item android:id="@+id/action_home" 
     android:icon="@drawable/navigation_back" 
     android:title="@string/action_home" 
     android:showAsAction="always" />" 
<item android:id="@+id/action_search" 
     android:icon="@drawable/ic_action_search" 
     android:title="@string/action_search" 
     android:showAsAction="always" /> 
<!-- Settings, should always be in the overflow --> 
<item android:id="@+id/action_settings" 
    android:icon="@drawable/ic_action_overflow" 
    android:title="@string/action_settings" 
    android:showAsAction="always" /> 

</menu> 

MainActivity.java : 내가 사방

내 menu.xml 그 코드를 붙여 강제 될 경우 MainActivity 응용 프로그램에서 탭의 코드는 이상한 것, 내가 전에 말했듯 그러나 무엇 :(시작 해달라고

public class MainActivity extends Activity implements ActionBar.TabListener{ 
private static final String STATE_SELECTED_NAVIGATION_ITEM =  "selected_navigation_item"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // Set up the action bar to show tabs. 
    final ActionBar actionBar = getActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    // For each of the sections in the app, add a tab to the action bar. 
    actionBar.addTab(actionBar.newTab().setText(R.string.title_section_music) 
     .setTabListener(this)); 
    actionBar.addTab(actionBar.newTab().setText(R.string.title_section_video) 
     .setTabListener(this)); 
    actionBar.addTab(actionBar.newTab().setText(R.string.title_section_photo) 
     .setTabListener(this)); 
} 
    @Override 
    public void onRestoreInstanceState(Bundle savedInstanceState) { 
    // Restore the previously serialized current tab position. 
    if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) { 
     getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM)); 
    } 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
    // Serialize the current tab position. 
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar() 
     .getSelectedNavigationIndex()); 
    } 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main, menu); 
    return super.onCreateOptionsMenu(menu); 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle presses on the action bar items 
    switch (item.getItemId()) { 
     case R.id.action_home: 
      Intent intent = new Intent(this, MainActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
      return true; 
     case R.id.action_search: 
      //openSearch(); 
      return true; 
     case R.id.action_settings: 
      //openSettings(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 
    @Override 
    public void onTabSelected(ActionBar.Tab tab, 
     FragmentTransaction fragmentTransaction) { 
     Intent intent = new Intent(this, PlayerListViewActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, 
     FragmentTransaction fragmentTransaction) { 
    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, 
     FragmentTransaction fragmentTransaction) { 
    } 

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

    GridView gridview = (GridView) findViewById(R.id.gridview); 
    gridview.setAdapter(new ImageAdapter(this)); 
    gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      String[] tekst = {"Music", "Video", "Settings", "Exit"}; 
      Toast.makeText(MainActivity.this, "" + tekst[position], Toast.LENGTH_SHORT).show(); 
      if(position == 3) 
      { 
       finish(); 
       System.exit(0); 
      } 
     } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
}*/ 

} 

답변

0

코드를 다시 작성할 필요가 없으므로 두 번째 활동을 활동 대신 주요 활동으로 확장하십시오.

Public 클래스 SecondActivity는 Mainactivity 간단한 :) 가 당신에게

+0

서사시 ​​조언 남자 도움이되기를 바랍니다 연장! 거의 완벽하게 작동합니다. 내 override onTabSelected 함수를 살펴보십시오. 어떤 탭이 선택되었는지 확인하는 방법? 내가 onTabSelected에서 onOptionsItemSelected case action_home 코드를 넣을 때 좀 더 많은 버그가있다. 완벽하게 작동하지만 onTabSelected 앱이 계속 작동하지 않을 때 어쩌면 시작 앱의 첫 번째 탭이 항상 선택되어있을 가능성이있다. 실제 장치가 아닌 AVD에서 실행 중입니다. 그 방법 @Override \t 공공 무효 onTabSelected (탭 탭하여 FragmentTransaction 피트) { \t \t INT I = tab.getPosition()를 찾을 수) (RLY – fa1thly

+0

tab.getposition을 나도 몰라; 내가 metion 응용 프로그램 태그 에서 mainfest에 applicatiob 바 테마가 dummactivty 그 모든 액션 바의 방법을 쓰기 만들고 모든 확장 말했듯이 \t \t // TODO 자동 생성 방법은 \t} –

+0

홈페이지 activty으로 확장하지 말아 주시기 바랍니다 스텁 더미 활동 활성화 –