结合ListActivity和ActionBarActivity

时间:2013-12-11 16:03:03

标签: java android

我目前正在构建至少10 SDK,因此我必须使用android-support-v7-appcompat库来实现ActionBar。我已经设置了ActionBar,但我想现在添加一个ListActivity,但这需要扩展我的类,Java没有多个inheritance。我该怎么办?

public class MainActivity extends ActionBarActivity {

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    getSupportActionBar().setIcon(R.drawable.ic_action_search);
    getSupportActionBar().setDisplayShowHomeEnabled(false);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
   }

 }

2 个答案:

答案 0 :(得分:21)

ListActivity尚未移植到AppCompat。可能是因为您应该将其视为“已弃用”,而是使用ListFragment。

片段将与ActionBarActivity一起使用,只需确保它们是支持库中的片段。

阅读有关片段的this链接。

对于您的用例,我只想在xml中定义片段。

答案 1 :(得分:11)

最简单的方法是在ListFragment内使用ActionBarActivity。我是这样做的:

public class MyActivity extends ActionBarActivity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        MyFragment fragment = new MyFragment();
        getSupportFragmentManager().beginTransaction().replace(android.R.id.content, fragment).commit();
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home: {
                finish();
                break;
            }

            default: {
                break;
            }
        }
        return true;
    }

    public static class MyFragment extends ListFragment {

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            ...
        }

        public void onListItemClick(ListView listView, View view, int position, long id) {
            ...
        }
    }
}

这样你甚至不需要一个xml,它运行良好。