我们可以对所有活动使用单个操作栏吗?

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 的单个实例?

我们可以将 soundpool id 从一个活动传递到另一个活动吗?

如何处理单个活动的多个片段

如何通过单个操作关闭 2 个活动