Android如何在ListActivity中使用工具栏?

时间:2015-08-04 12:01:14

标签: android toolbar listactivity

我制作了一个ListActivity:

 public class NoteListActivity extends ListActivity{
 }

并且以下方法不再可用:

    setSupportActionBar(toolbar);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

但我可以使用:

    setActionBar(toolbar);
    getActionBar().setHomeButtonEnabled(true);
    getActionBar().setDisplayHomeAsUpEnabled(true);

请注意,我在同一项目的其他活动中使用了支持库。这意味着我添加了正确的gradle依赖项。

如何使用ListActivity和android.support.v7.widget.Toolbar?

4 个答案:

答案 0 :(得分:5)

您无法在ToolBar中执行此操作。

如果您想访问Activity,则需要使用ListView扩展您的课程。

我的建议:不要使用ListActivty,因为您要使用Activity。创建{{1}},然后在{{1}}内只有{{1}}。它会工作得很好。

答案 1 :(得分:5)

     @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    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);
    delegate.setContentView(R.layout.saved_report_activity);

    Toolbar toolbar= (Toolbar) findViewById(R.id.toolbar);
    delegate.setSupportActionBar(toolbar);
    delegate.getSupportActionBar().setDisplayShowHomeEnabled(true);

    toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            NavUtils.navigateUpFromSameTask(SavedReportActivity.this);
        }
    });

答案 2 :(得分:1)

AppCompatActivity是支持v4的 FragmentActivity 的直接子类。阅读本文

  

http://android-developers.blogspot.it/2015/04/android-support-library-221.html   所以根据您的要求,public class NoteListActivity extends AppCompatActivity {...}

只需更改您的依赖关系,例如:

compile "com.android.support:appcompat-v7:22.1.0"

答案 3 :(得分:0)

我能够通过添加支持库工具栏样式,然后将该样式添加到清单中的列表活动中来解决此问题。

在styles.xml中:

     <style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">

在清单中

    <activity android:theme="@style/FullscreenActionBarStyle"
              android:name="@string/my_activity_name"
              android:label="@string/my_activity_label"/>

这应该在您的活动中添加一个工具栏,您可以在其中添加项目并使用其来处理事件,等等...