我正在尝试做一个简单的任务,即为我的活动设置片段,以便在选择菜单项时在它们之间进行更改。
这是一个合适的android设计模式吗?在 iOS 中,我将为每个“选项卡”设置单独的视图控制器,但在 Android 中,您似乎应该有 1 个带有许多片段的活动。
是否有用于创建带有片段的简单菜单的示例代码,这就是我想要做的。
(我发现 android 文档与 iOS 不符)
main_menu.xml
<item
android:id="@+id/need_to_know_menu_item"
android:showAsAction="ifRoom|withText"
android:title="@string/need_to_know"
/>
<item
android:id="@+id/schedule_menu_item"
android:showAsAction="ifRoom|withText"
android:title="@string/schedule"
/>
<item
android:id="@+id/news_menu_item"
android:showAsAction="ifRoom|withText"
android:title="@string/news"
/>
<item
android:id="@+id/map_menu_item"
android:showAsAction="ifRoom|withText"
android:title="@string/map"
/>
<item
android:id="@+id/tweets_menu_item"
android:showAsAction="ifRoom|withText"
android:title="@string/tweets"
/>
<item
android:id="@+id/players_menu_item"
android:showAsAction="ifRoom|withText"
android:title="@string/players"
/>
MainActivity.java
package com.example.app;
import android.os.Bundle;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@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, menu);
getActionBar().setHomeButtonEnabled(true);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case android.R.id.home:
case R.id.need_to_know_menu_item:
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
case R.id.schedule_menu_item:
return true;
case R.id.news_menu_item:
return true;
case R.id.map_menu_item:
return true;
case R.id.tweets_menu_item:
return true;
case R.id.players_menu_item:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}