如何将布局作为函数参数传递

时间:2019-08-26 09:26:03

标签: java android android-layout arguments

这可能是一个非常简单的问题,但我坚持使用这个问题。

我有一个在应用程序中多次调用的函数。 我想对其进行重构,但是我不知道如何将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);
   }

但是如果我想更改布局,则需要能够将其作为参数传递:/

3 个答案:

答案 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) {

}
相关问题