简体   繁体   English

将数据从DialogFragment返回到MainActivity

[英]Return data from DialogFragment to MainActivity

I'm trying return a String from the DialogFragment, following this instructions https://stackoverflow.com/a/14808425/2933117 , but I only get logcat error 我正在尝试从DialogFragment返回一个字符串,遵循此说明https://stackoverflow.com/a/14808425/2933117 ,但我只得到logcat错误

java.lang.ClassCastException: com.example.testinterface.MainActivity cannot be cast to com.example.testinterface.InterDialog$EditNameDialogListener

I appreciate any help or explanation of why I get an error, thanks in advance. 我很感激任何帮助或解释为什么我会收到错误,提前谢谢。

Here is my code: 这是我的代码:

MainActivity 主要活动

public class MainActivity extends FragmentActivity {

    private Button Btn;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Btn=(Button)findViewById(R.id.button1);

        Btn.setOnClickListener(new View.OnClickListener(){
            public void onClick (View view) {
                FragmentManager fm = getSupportFragmentManager();
                InterDialog pruebafragment = new InterDialog();
                pruebafragment.show(fm,"MyFragment");
            }
        });

    }

    public void onFinishEditDialog (String inputText) {
        Toast.makeText(this, "Hi, " + inputText, Toast.LENGTH_SHORT).show();
    }

}

and DialogFragment DialogFragment

public class InterDialog extends DialogFragment {

    public interface EditNameDialogListener {
        void onFinishEditDialog(String inputText);
    }

    public InterDialog() {
        // Empty constructor required for DialogFragment
    }

    EditNameDialogListener activity;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

     View view = inflater.inflate(R.layout.new_layout, container);  

     activity = (EditNameDialogListener) getActivity(); 

     Button button = (Button)view.findViewById(R.id.Btnreturn);
     button.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
             activity.onFinishEditDialog("errorrrr");
             getDialog().dismiss();
         }
     });

     return view;

  }
}

The line: 这条线:

activity = (EditNameDialogListener) getActivity();

is what is breaking it. 是什么打破了它。 Make sure your activity implements the EditNameDialogListener interface by doing 确保您的活动通过执行来实现EditNameDialogListener接口

public class MainActivity extends FragmentActivity implements EditNameDialogListener {

Hope that helps 希望有所帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM