我们可以对所有 Activity 使用单个 Action Bar 吗?

Can we to use the single Action Bar for all Activities?

我有 Action bar 和很多不同的 Activity,它可以工作,但我不想在每个 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
}

感谢您的解答!

您可以创建名为 BaseActivity 的 class,它将扩展 AppCompatActivity 并将您想要在其他 Activity 中使用的代码和功能放在那里。然后在你的每个活动中,你将扩展 BaseActivity 而不是 AppCompatActivity。通过这样做,您可以避免重复您的代码。请记住,您必须在每个 activity .xml 布局文件中放置 ActionBar

创建一个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 中创建的函数。

  1. 创建一个布局,比如 toolbar_layout,并为您的布局添加代码,然后将布局包含在您的所有活动中: