【问题标题】:What is the best way to add a back button to custom toolbars?将后退按钮添加到自定义工具栏的最佳方法是什么?
【发布时间】:2020-04-09 09:11:47
【问题描述】:

所以我知道如何在我的自定义工具栏中添加一个向后导航按钮,但是必须有一种更有效的方法来将功能添加到多个活动中,而不是在每个活动中复制和粘贴此代码......

        Toolbar toolbar = findViewById(R.id.tlbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

我尝试过创建一个通用类,如果我创建了一个可以在每个活动中调用的函数,但是您需要findViewById,这只能在活动中完成。有什么建议吗?

【问题讨论】:

  • 创建一个由所有活动扩展的 BaseActivity 并将您的工具栏代码放在 BaseActivity 中,这样您只需编写一次代码。
  • 我将如何创建一个扩展所有活动的工具?我之前尝试过,但正如我提到的 findViewById 之类的函数有错误,因为它找不到小部件
  • 这里看看这个演示。我在这里创建了BaseActivitygithub.com/pt147/MVVM-Demo

标签: java android android-studio android-layout android-toolbar


【解决方案1】:

首先创建一个这样的基类

public class BaseActivity extends AppCompatActivity{


    public  void setToolbar(@IdRes int toolbarID){
        try {
            Toolbar toolbar = findViewById(toolbarID);
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
        }catch (Exception e){
            e.printStackTrace();

        }

    }

}

使用 BaseActivity 类扩展所有 Activity 类后

public class LoginNewActivity extends BaseActivity{

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setToolbar(R.id.toolbar); //You can call your method like this
    }
}

如果您想了解更多相关信息,请搜索JAVA 中的继承和多态

【讨论】:

    【解决方案2】:

    在清单上的活动标签中添加父活动名称并将值添加为您想要在按下时进行的活动。这是您的最佳解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多