如何在Activity中使用onCreateOptionsMenu()哪个扩展ListActivity

时间:2014-12-21 00:28:18

标签: java android xml android-studio

我的Android应用程序项目有问题。

我有一个MainActivity,如下所示:

public class MainActivity extends ListActivity {

    private NotesDataSource datasource;
    List<NoteItem> notesList;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        datasource = new NotesDataSource(this);

        refreshDisplay();
    }

    private void refreshDisplay() {
        notesList = datasource.findAll();
        ArrayAdapter<NoteItem> adapter = new ArrayAdapter<NoteItem>(this, R.layout.list_item_layout, notesList);
        setListAdapter(adapter);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }


}

我还有一个menu_main.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">

    <item android:id="@+id/action_create"
        android:title="@string/action_create"
        android:orderInCategory="100"
        app:showAsAction="always|withText"
        android:icon="@drawable/create_note"/>
</menu>

此时问题就出现了。我已经将我的超类从 ActionBarActivity 更改为 ListActivity 然后,当我在我的设备上运行我的应用时,我看不到我的创建图标(以及包含应用名称的顶级菜单) )。怎么了?想法?

(顺便说一下,我使用的是Android Studio Ide)

1 个答案:

答案 0 :(得分:3)

您的主题可能仍然基于Theme.AppCompat。如果您要使用Theme.AppCompat,则必须继承ActionBarActivity。如果您想使用ListActivity,则无法使用Theme.AppCompat

请注意,您无需使用ListActivity在活动中拥有ListViewHere is a sample project演示了Theme.AppCompatActionBarActivityListView的使用情况。 Here is another sample project,与前一个相同,只是我将自定义色调应用于操作栏。