您好我正在尝试做简单的应用(媒体播放器)。我有一些问题。我已经完成了一个包含3个按钮的菜单(在menu.xml文件中),在MainActivity.java中完成了3个选项卡。我的问题是: 如何将这些项目(按钮和标签)应用于所有活动?我是否需要粘贴MainActivity中的代码? (addTab,覆盖函数等)在我看来必须有其他方式。更重要的是:我想这样做,当生病点击tab1,listview apears下面,如果我点击tab2,gridview apears下面。我应该为3个标签做3种不同的布局和3种不同的活动吗?或1个布局和1个活动与所有项目?它应该是什么样子。
我已经完成了当我点击tab1我开始新活动时,onCreate函数的新活动加载了新的布局与listview(对于tab2 gridview)但在这种情况下我错过了我的操作栏和标签:(当我复制操作栏和来自MainActivity应用程序的标签代码甚至没有启动:(不过我之前说过,如果我被迫将代码粘贴到任何地方会很奇怪
我的menu.xml:
<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
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 :(得分:0)
您不需要再次编写代码将第二个活动扩展到Mainactivity而不是活动。
公共类SecondActivity扩展了Mainactivity 简单:) 希望它可以帮到你