我正在尝试为我的活动设置片段,以便在选择菜单项时在它们之间进行更改。
这是一个合适的Android设计模式吗?在iOS中,我会为每个“Tab”设置单独的视图控制器,但在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);
}
}
}
答案 0 :(得分:0)
这是一个合适的Android设计模式吗?
这有点奇怪,因为没有明显的原因导致相当重量级的活动。
片段通常用于您希望根据屏幕尺寸具有不同内容混合的位置(例如,平板电脑上同时显示屏幕上的列表和详细信息,但在手机上一次可见一个)。片段有时也会在专业用户界面中用于批量替换内容,例如标签或ViewPager
。
对于您想要更改全屏内容的地方,更常规的方法是进行单独的活动。
在iOS中,每个“Tab”都有单独的视图控制器
iOS对“标签”的定义可能与Android对“标签”的定义不同,因为您没有在此处实施标签。
但是在Android中你似乎有1个带有许多片段的活动
如果您正在实施标签,那将是一种合适的方法。您没有实施标签。
是否有用于创建带有片段的简单菜单的示例代码,就像我正在尝试的那样。
可能不是,因为这不是你通常会做的事情。话虽如此,如果您愿意,欢迎commit()
replace()
FragmentTransction
case
onOptionsItemSelected()
个getSupportFragmentManager().beginTransaction()
.replace(android.R.id.content,
new OtherFragment()).commit();
块中的FragmentTransaction
{{1}}。类似的东西:
{{1}}
这假设此活动的原始用户界面也是使用您的代码未显示的片段和{{1}}创建的。
我发现Android文档不符合iOS
当然,欢迎您提出您的意见,无关紧要且不利于表达您在此获得帮助。