我按照Android nanodegree程序中提到的开发阳光应用程序。完成了应用程序,但我在我的详细活动和2个共享菜单项中看到了两个条目。
以下是我的github回购。
https://github.com/arupsarkar/sunshine
这就是我的看法。
答案 0 :(得分:3)
简短回答
从DetailActivity中删除以下内容:
from tkinter import *
答案很长
您实际上在活动中添加了2个片段。
if(savedInstanceState == null){
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment, new DetailActivityFragment())
.commit();
}
布局中的一个:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
...
android:name="com.kavayah.sunshine.DetailActivityFragment"
删除第二个。片段标记(以及name属性)已经在您的布局中加载了片段。无需在其中添加另一个。
另一个注意事项:
您应该为应用程序中的所有活动创建一个根活动,以便您可以共享所有活动的公共菜单。每次创建一个新活动时都不需要像这样重复(更不用说它会保持一致 - 不再是这个 - 选项 - 在这里工作 - 但不是这里的情况):
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment, new DetailActivityFragment())
.commit();
特定于活动的额外菜单选项可以通过调用
始终在现有活动之上充气@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_detail, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
startActivity(new Intent(this, SettingsActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
可以通过覆盖getMenuInflater().inflate(R.menu.extra_option, menu);
方法来扩展他们的行为。