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

Len*_*ena 4 java android arguments android-layout

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

我的函数在我的应用程序中被多次调用。我想重构它,但是我不知道如何将findViewByIdas 的值作为参数传递。

请问你知道怎么做吗?


public void configureToolbar() {
        mToolbar = (Toolbar) findViewById(R.id.activitySettingsToolbar);
        mToolbar.setElevation(0);
        mToolbar.setTitle("");

        setSupportActionBar(mToolbar);
    }

Run Code Online (Sandbox Code Playgroud)

编辑:

到目前为止,我可以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);
   }

Run Code Online (Sandbox Code Playgroud)

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

a_l*_*ody 5

您可以通过工具栏的ID进行传递:

public void configureToolbar(int id) {
    mToolbar = (Toolbar) findViewById(id);
    mToolbar.setElevation(0);
    mToolbar.setTitle("");

    setSupportActionBar(mToolbar);
}
Run Code Online (Sandbox Code Playgroud)

那么您可以使用以下命令调用它:

configureToolbar(R.id.yourToolbarId)// in your case this is R.id.activitySettingsToolbar or any other toolbar Id
Run Code Online (Sandbox Code Playgroud)

从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);
 }
}
Run Code Online (Sandbox Code Playgroud)

然后您使用以下命令调用它:

configureToolbar(yourActivity, R.id.yourToolbarId)
Run Code Online (Sandbox Code Playgroud)