如何从DialogFragment的数据MainActivity在Android的? [英] How to get the Data from DialogFragment to MainActivity in Android?

查看:130
本文介绍了如何从DialogFragment的数据MainActivity在Android的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建一个使用 DialogFragment 。我一个应用程序想从 DialogFragment 的setText 在 MainActivity 。在我的code我成功创建了 AlertDialog 。但我续抽到了的EditText 价值 MainActivity 。应用是crashed.Please帮我解决了problem.Any帮助将我真鸭preciate。

I create a application using DialogFragment.I want to get the Data from DialogFragment and setText in the MainActivity. In my Code I successfully Created the AlertDialog.But I con't able to get the EditText value to MainActivity.Application is crashed.Please help me to solve the problem.Any Help would be I really Appreciate.

MainActivity.java

public class MainActivity extends ActionBarActivity {
Button showDialog;
TextView showText;
String myNameStr;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    showDialog = (Button)findViewById(R.id.myBtn);
    showText = (TextView)findViewById(R.id.showText);
    showDialog.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showMyAlert(v);
        }
    });
}

public void showMyAlert(View view) {
    MyAlert myAlert = new MyAlert();
    myAlert.show(getFragmentManager(), "My New Alert");
}

public void setMyNameStr(String myNameStr) {
    showText.setText(myNameStr);
}
}

MyAlert.java

public class MyAlert extends DialogFragment implements OnClickListener {
private EditText getEditText;
MainActivity callBackActivity;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    callBackActivity = new MainActivity();
    getEditText = new EditText(getActivity());
    getEditText.setInputType(InputType.TYPE_CLASS_TEXT);
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Get UserName :");
    builder.setMessage("Enter Your Name :");
    builder.setPositiveButton("Ok", this);
    builder.setNegativeButton("Cancel", null);
    builder.setView(getEditText);
    return builder.create();
}

@Override
public void onClick(DialogInterface dialog, int which) {
    String value = getEditText.getText().toString();
    Log.d("Name : ", value);
    MainActivity mainActivity = new MainActivity();
    mainActivity.setMyNameStr(value);
    dialog.dismiss();
}
}

使用这个应用程序是死机了。

Using this Procedure Application is Crashed.

推荐答案

喜欢 -

CustomDialogInterface.java

CustomDialogInterface.java

public interface CustomDialogInterface {

        // This is just a regular method so it can return something or
        // take arguments if you like.
    public void okButtonClicked(String  value);


}

和通过修改MyAlert.java -

and modify your MyAlert.java by-

public class MyAlert extends DialogFragment implements OnClickListener {

private EditText getEditText;
MainActivity callBackActivity;
CustomDialogInterface customDI;

public MyAlert(CustomDialogInterface customDI)
{
    this.customDI = customDI;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    callBackActivity = new MainActivity();
    getEditText = new EditText(getActivity());
    getEditText.setInputType(InputType.TYPE_CLASS_TEXT);
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Get UserName :");
    builder.setMessage("Enter Your Name :");
    builder.setPositiveButton("Ok", this);
    builder.setNegativeButton("Cancel", null);
    builder.setView(getEditText);
    return builder.create();
}

@Override
public void onClick(DialogInterface dialog, int which) {
    String value = getEditText.getText().toString();
    Log.d("Name : ", value);
    dialog.dismiss();
    customDI.okButtonClicked(value);


}
}

在MainActivity

和实施CustomDialogInterface和超​​越控制方法okButtonClicked()
当的onClick会叫那你MainActivity的onButtonClicked将被调用。

And implement CustomDialogInterface in your MainActivity and overide method okButtonClicked() When onClick will be called then your MainActivity's onButtonClicked will be called .

和变化showAlert到 -

and change showAlert to -

public void showMyAlert(View view) {
    MyAlert myAlert = new MyAlert(this);
    myAlert.show(getFragmentManager(), "My New Alert");
}

这篇关于如何从DialogFragment的数据MainActivity在Android的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆