use*_*977 4 android android-activity android-toolbar
我的应用程序有一个工具栏,应该出现在每个视图上.目前,我在onCreate()每个Activity的方法中执行以下操作:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
这是否需要onCreate()在每个Activity 中的每个方法中完成,还是有更简单的方法?另外,作为一个附带问题,我如何在工具栏中实现一个"后退"功能,如果用户点击它就会引导用户返回一个操作?
Ami*_*pta 18
为.创建一个基类 Activity
public abstract class BaseActivity extends AppCompatActivity {
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResource());
configureToolbar();
}
protected abstract int getLayoutResource();
private void configureToolbar() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
FragmentManager fm = getSupportFragmentManager();
if (fm != null && fm.getBackStackEntryCount() > 0) {
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
} else {
finish();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在每个Activity扩展这个BaseActivity以获得ToolBar和实现后面的功能.
最后不要忘记ToolBar在每个活动中包含layout.
编辑:
getLayoutResource()在每个中重写该方法Activity并传递布局ID.
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public int getLayoutResource() {
return R.layout.activity_main;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6697 次 |
| 最近记录: |