我目前正在构建至少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);
}
}
答案 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,它运行良好。