Java 扩展实现工具栏的基本活动时,工具栏不显示在活动中
我是一名Android初学者,我一直在努力解决一个问题:在继承基本活动的任何活动中,我都看不到工具栏。根据其他资源,在不同的活动中使用相同的工具栏。我必须在基本活动中实现它,并在需要使用它的地方继承它。有人能帮我解决这个问题吗 styles.xmlJava 扩展实现工具栏的基本活动时,工具栏不显示在活动中,java,android,android-activity,android-toolbar,android-menu,Java,Android,Android Activity,Android Toolbar,Android Menu,我是一名Android初学者,我一直在努力解决一个问题:在继承基本活动的任何活动中,我都看不到工具栏。根据其他资源,在不同的活动中使用相同的工具栏。我必须在基本活动中实现它,并在需要使用它的地方继承它。有人能帮我解决这个问题吗 styles.xml <resources> <style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> </style> <style name
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>
<style name="AppTheme" parent="AppBaseTheme">
</style>
</resources>
WelcomeActivity(继承基本活动)
问卷调查
public class Questionnaire extends BaseActivity {
public Spinner languageSpinner;
public int languageId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_questionnaire);
...
}
}
答案其实很简单。首先在BaseActivity类的
OnCreate()
方法中设置contentview,然后在子类的OnCreate()
方法中将视图更改为另一个xml文件
我建议您不要在BaseActivity类中实现OnCreate()
方法,而是在BaseActivity类中实现SetContentView()
方法
简而言之,从BaseActivity()中删除onCreate()
方法,并在下面的中添加setContentView()
方法
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
注意-您的quick_menu.xml
文件看起来不像菜单文件:
P.P.S-让我知道它是否有效,或者您是否有问题。:) 谢谢你的快速回复。我试过你所做的,但还没有成功。另外,感谢您指出quick.menu文件。我修改了它。@YudaiYaguchi您的布局文件(
activity\u investment
和activity\u welcome
)是否包含工具栏?向BaseActivity
添加一些protected
方法,可以将内容视图和工具栏设置为SupportActionBar
,这可能是最不混乱的。。。因为扩展BaseActivity
的类必须提供相应的布局和工具栏的resId
s。。。不能假设工具栏的resId
始终是R.id.toolbar
(例如,在需要多个不同工具栏的应用程序中)。
public class WelcomeActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
final Button databaseButton = findViewById(R.id.database);
databaseButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Code here executes on main thread after user presses button
Intent databaseIntent = new Intent(WelcomeActivity.this, Questionnaire.class);
startActivity(databaseIntent);
}
});
}
public class Questionnaire extends BaseActivity {
public Spinner languageSpinner;
public int languageId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_questionnaire);
...
}
}
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}