在扩展ListActivity的活动中将操作图标添加到工具栏

时间:2015-07-30 12:02:27

标签: android toolbar

我正在尝试将操作图标添加到我的工具栏,但是徒劳无功。我已经遵循了thread的所有建议。

可能问题是我的活动没有直接扩展ActionBarActivity,因为它已经扩展ListActivity,如下所示:

public class ShopsCatalogueActivity extends ListActivity {

    private Toolbar toolbar; // Declaring the Toolbar Object

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //using delegates because this activity already extends ListActivity and we want to add toolbar
        AppCompatCallback callback = new AppCompatCallback() {
            @Override
            public void onSupportActionModeStarted(ActionMode actionMode) {
            }

            @Override
            public void onSupportActionModeFinished(ActionMode actionMode) {
            }

            @Nullable
            @Override
            public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) {
                return null;
            }
        };
        AppCompatDelegate delegate = AppCompatDelegate.create(this, callback);
        delegate.onCreate(savedInstanceState);
        //get the layout
        delegate.setContentView(R.layout.activity_shops_catalogue);

        //adding toolbar following material design approach
        toolbar= (Toolbar) findViewById(R.id.tool_bar); // Attaching the layout to the toolbar object
        delegate.setSupportActionBar(toolbar);
        ...
    }

这是我的menu.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:MyOwnAppNameSpace="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        MyOwnAppNameSpace:showAsAction="never" />
    <item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_search"
        android:orderInCategory="200"
        android:title="Search"
        MyOwnAppNameSpace:showAsAction="always"></item>

    <item
        android:id="@+id/action_user"
        android:icon="@drawable/ic_user"
        android:orderInCategory="300"
        android:title="User"
        MyOwnAppNameSpace:showAsAction="ifRoom"></item>

</menu>

在活动中:

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

在build.gradle中我使用:
compile 'com.android.support:appcompat-v7:22.2.0'

1 个答案:

答案 0 :(得分:0)

您可以使用的一种方法是使用FragmentActivity作为基本活动,然后将其加载到ListFragment中。在列表片段中,您只需在onCreate方法中添加以下行:

getActivity().getActionBar().setIcon(R.drawable.ic_main);

然而,Budius是对的,你应该使用RecyclerView,它是一个新的android类,简化了旧的viewholder模式。 Android List and Card GuideRecyclerView Android Doc