我们可以对所有活动使用单个操作栏吗?
Posted
技术标签:
【中文标题】我们可以对所有活动使用单个操作栏吗?【英文标题】:Can we to use the single Action Bar for all Activities? 【发布时间】:2019-06-09 21:39:45 【问题描述】:我有Action bar
和很多不同的Activity
,它们都在工作,但我不想在每个Activity
中添加代码。如何在一个Activity
中添加一个代码,该代码适用于每个Activity
?我希望在一个Activity
中为所有活动编写一个代码。
我的主要活动:
package ua.in.masterpc.technoguide;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.ImageButton;
public class IconsMain extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_icons_main);
ImageButton myImageButton = findViewById(R.id.iconPC);
myImageButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent intentLoadNewActivity = new Intent(IconsMain.this, PCProblems.class);
startActivity(intentLoadNewActivity);
);
@Override//start menu code
public boolean onCreateOptionsMenu(Menu menu)
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.bar_menu, menu);
return true;
//end menu code
感谢您的回答!
【问题讨论】:
【参考方案1】:您可以创建名为BaseActivity
的类,该类将扩展AppCompatActivity
,并将您想在其他Activity
中使用的代码和功能放在那里。然后在您的每个活动中,您将扩展BaseActivity
而不是AppCompatActivity
。通过这样做,您可以避免重复您的代码。请记住,您必须将ActionBar
放入每个活动.xml
布局文件中。
【讨论】:
谢谢你,大卫。我会努力的。【参考方案2】:创建一个baseActivity
在其中添加函数以初始化工具栏并根据需要自定义它
open class BaseActivity : AppCompatActivity()
protected fun initializeToolbar()
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
创建toolbar_main.xml
在将toolbar_main.xml
包含为<include layout="@layout/toolbar_main" />
之后,在任何活动中扩展baseActivity
class MainActivity : BaseActivity()
并调用您在baseActivity
中创建的函数。
【讨论】:
【参考方案3】:创建一个布局,比如toolbar_layout,并为您的布局添加代码,然后将该布局包含在您的所有活动中:
【讨论】:
以上是关于我们可以对所有活动使用单个操作栏吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在所有活动和片段中使用 MediaPlayer 的单个实例?