重复的详细内容和操作栏项

时间:2015-06-16 19:46:33

标签: android

我按照Android nanodegree程序中提到的开发阳光应用程序。完成了应用程序,但我在我的详细活动和2个共享菜单项中看到了两个条目。

以下是我的github回购。

https://github.com/arupsarkar/sunshine

这就是我的看法。

http://discourse-cdn.global.ssl.fastly.net/udacity/uploads/default/optimized/3X/d/9/d98785720464a3da7f3aeb2438e23b63bb1c253e_1_312x500.png

1 个答案:

答案 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); 方法来扩展他们的行为。