这可能是一个非常简单的问题,但我坚持使用这个问题。
我有一个在应用程序中多次调用的函数。
我想对其进行重构,但是我不知道如何将findViewById
的值作为参数传递。
请问你知道怎么做吗?
public void configureToolbar() {
mToolbar = (Toolbar) findViewById(R.id.activitySettingsToolbar);
mToolbar.setElevation(0);
mToolbar.setTitle("");
setSupportActionBar(mToolbar);
}
编辑:
到目前为止,我可以执行以下操作configureToolbar(Activity activity, Toolbar mToolbar)
:
public void configureToolbar(Activity activity, Toolbar toolbar) {
toolbar= (Toolbar) findViewById(R.id.activitySettingsToolbar);
toolbar.setElevation(0);
toolbar.setTitle("");
((AppCompatActivity)activity).setSupportActionBar(toolbar);
}
但是如果我想更改布局,则需要能够将其作为参数传递:/
答案 0 :(得分:5)
您可能会通过工具栏的ID:
public void configureToolbar(int id) {
mToolbar = (Toolbar) findViewById(id);
mToolbar.setElevation(0);
mToolbar.setTitle("");
setSupportActionBar(mToolbar);
}
然后您可以使用:
configureToolbar(R.id.yourToolbarId)// in your case this is R.id.activitySettingsToolbar or any other toolbar Id
从OP编辑后:
public void configureToolbar(Activity activity, int toolbarId) {
Toolbar toolbar= (Toolbar) activity.findViewById(toolbarId);
if(toolbar != null) { //credit to @Gabriele Mariotti, I missed this check
toolbar.setElevation(0);
toolbar.setTitle("");
((AppCompatActivity)activity).setSupportActionBar(toolbar);
}
}
然后使用:
configureToolbar(yourActivity, R.id.yourToolbarId)
答案 1 :(得分:4)
您可以执行以下操作:
private void setupToolbar(int resource){
Toolbar toolbar = findViewById(resource);
if (toolbar != null){
//....
}
}
答案 2 :(得分:0)
在参数中传递布局的最佳方式是使用@LayoutRes注解:
fun buildDialog(@LayoutRes viewId : Int) {
}