【问题标题】:How can I change the textView of an Activity from a DialogFragment?如何从 DialogFragment 更改 Activity 的 textView?
【发布时间】:2018-08-13 11:03:36
【问题描述】:

这是活动的java文件

private TextView tv;

 private Button btn;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu_agente);
        tv = (TextView) findViewById(R.id.Estado);
    }

    //Método para el bottón rojo

    protected void BotonRojo(View view){
        DialogFragment dialogFragment = new DialogoOcupado();
        dialogFragment.show(getSupportFragmentManager(),"Un Dialogo");
    }


Thats the DialogFragment class(extends DialogFragment)


    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        builder.setTitle("Aviso")
                .setMessage("Vas a pasar a estado Ocupado, estás seguro?")
                .setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {

                            }
                        }
                )
                .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }
                })
                .setNeutralButton("Más Tarde", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }
                });

        return builder.create();
    }

我想在用户按下“Aceptar”按钮时更改TextView(tv)。我该怎么做?抱歉,我正在学习 Android 编程。

【问题讨论】:

  • 使用接口或本地广播

标签: android android-dialogfragment


【解决方案1】:

有很多方法可以做到这一点。 我认为最简单的就是这个......

在您的Activity 中创建一个方法。并从Dialog 调用它。

((YourActivity)getActivity()).changeStatus("pass anything");

在您的Activity 中创建changeStatus() 方法。

public void changeStatus(String s){
   tv.setText(s);
}

【讨论】:

  • 对不起,我是个菜鸟,但我的活动名称是什么?我可以将名称放在那里还是必须将值从 Activity 传递给 DialogFragment?
  • 在java中称为类型转换。见stackoverflow.com/a/5289493/6891563
  • 您只需写下您的活动名称并导入即可。
  • 但是如果他使用来自另一个活动的相同对话框片段,这将导致类转换异常
  • 如果您需要从多个来源执行此操作,那么您将使用接口。
【解决方案2】:

试试这个,

public void changeText(String text){
    textView.setText(text);
}

来自对话片段,

((Your activity)getActivity()).changeText(text);

【讨论】:

  • 对不起,我是菜鸟,但我的活动名称是什么?我可以将名称放在那里还是必须将值从 Activity 传递给 DialogFragment?
猜你喜欢
  • 2015-12-20
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
相关资源
最近更新 更多