猿问

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

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


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

   }


但是如果我想改变我的布局,我需要能够将它作为参数传递:/


宝慕林4294392
浏览 130回答 3
3回答

蓝山帝景

您可能会通过工具栏的 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)

qq_花开花谢_0

你可以这样做:private void setupToolbar(int resource){    Toolbar toolbar = findViewById(resource);    if (toolbar != null){      //....    }}

拉风的咖菲猫

在参数中传递布局的最佳方法是使用@LayoutRes注解:fun buildDialog(@LayoutRes viewId : Int) { }
随时随地看视频慕课网APP

相关分类

Java
我要回答