【问题标题】:How to update text of a button in parent dialogfragment?如何更新父对话框片段中按钮的文本?
【发布时间】:2015-01-23 09:35:10
【问题描述】:

我在MainActivity 中有一个dialogfragment,并显示如下:

...
            AddNewPlanDialog mAddNewPlanDialog = new AddNewPlanDialog();
            mAddNewPlanDialog.show(getSupportFragmentManager(), "addNewPlanDialog");
...

在这个AddNewPlanDialog中,有一个按钮,当我点击这个按钮时,它会显示另一个dialogfragment,提供一个列表供我选择。这是AddNewPlanDialog的代码。

public class AddNewPlanDialog extends DialogFragment {



    @Override
    @NonNull
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder mBuilder = new AlertDialog.Builder(getActivity());
        LayoutInflater mInflater = getActivity().getLayoutInflater();

        View mView = mInflater.inflate(R.layout.frag_add_new_plan_dialog, null);

        Button mPriorityButton = (Button)mView.findViewById(R.id.btn_add_new_plan_priority);


        //update priority of plan
        mPriorityButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                AddNewPlanPriorityDialog mAddNewPlanPriorityDialog = new AddNewPlanPriorityDialog();
                mAddNewPlanPriorityDialog.show(getActivity().getSupportFragmentManager(), "addNewPlanPriorityDialog");

            }
        });




        // set final view and final buttons
        mBuilder.setView(mView)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub

                    }
                })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                // TODO Auto-generated method stub

                            }
                        });

        return mBuilder.create();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        Log.i(TAG, "ON ACTIVITY CALLED!!!");
        super.onActivityResult(requestCode, resultCode, data);
    }


}           

这是AddNewPlanPriorityDialog的代码。

public class AddNewPlanPriorityDialog extends DialogFragment {


    @Override
    @NonNull
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder mBuilder = new AlertDialog.Builder(getActivity());
        mBuilder.setTitle(R.string.pick_priority).setItems(
                R.array.add_new_plan_priority_array,
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        // do something
                    }
                });

        return mBuilder.create();
    }

}

mAddNewPlanPriorityDialog 中的项目被按下并返回时,我想更新mPriorityButton 的文本。

有什么想法吗?谢谢!!

【问题讨论】:

    标签: android android-fragments android-button android-dialogfragment


    【解决方案1】:

    从第一个对话框开始显示第二个对话框时使用mAddNewPlanPriorityDialog.setTargetFragment(AddNewPlanDialog.this, requestCode);(在调用show() 之前)。 还有((AddNewPlanDialog) getTargetFragment()).someFunction();

    而不是第二个对话框中的// do something

    【讨论】:

      【解决方案2】:

      感谢smb的回答,这个问题解决了。这里有一些补充。

      在第二个对话框中,从父级dialogfragment 调用一个函数,如下所示:

      ...
      ((AddNewPlanDialog)getTargetFragment()).updatePriority();
      ...
      

      然后在第一个对话框中定义这个函数。

      ...
      public void updatePriority(){
      
      
          Button mButton = (Button) getDialog().findViewById(R.id.btn_add_new_plan_priority);
          mButton.setText("pick me!!");
      
      }
      ...
      

      现在父对话框中的按钮得到更新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-25
        • 1970-01-01
        • 2020-07-31
        • 1970-01-01
        相关资源
        最近更新 更多