英文:
What is the best way to add a back button to custom toolbars?
问题
我知道如何在我的自定义工具栏中添加一个后退导航按钮,然而必须有一种更有效的方法来将这个功能添加到多个活动中,而不是在每个活动中复制并粘贴这段代码...
Toolbar toolbar = findViewById(R.id.tlbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
我尝试过创建一个通用类,其中我创建了一个可以在每个活动中调用的函数,然而你需要使用 findViewById
,而这只能在活动中完成。关于此问题,有什么建议吗?
英文:
So i know how to add a backwards navigation button to my custom toolbar, however there must be a more efficient way to add the functionality to multiple activities than copying and pasting this code in each one...
Toolbar toolbar = findViewById(R.id.tlbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
I've tried making a common class were i create a function that could be called in each activity however you need to findViewById
which can only be done in the activity. Any suggestions around this?
答案1
得分: 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();
}
}
}
然后将所有的Activity类继承BaseActivity类:
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
}
}
如果你想了解更多关于这个主题的内容,可以搜索 Inheritance and polymorphism in JAVA。
英文:
First Create a base class like this
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();
}
}
}
After extends all Activity class with BaseActivity class
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
}
}
If you want to know more about this do search for Inheritance and polymorphism in JAVA
答案2
得分: 0
在您的清单中的activity标签上添加parentactivityname,并将值添加为您希望在返回按钮按下时转到的活动,这是对您最好的解决方案。
英文:
in your activity tag on manifest add parentactivityname and add value as an activity which you want to go when back pressed.this is the best solution for you.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论