【发布时间】:2015-06-11 10:06:17
【问题描述】:
我使用DialogFragment 创建了一个应用程序。我想从MainActivity 中的DialogFragment 和setText 获取数据。在我的代码中,我成功创建了AlertDialog。但我无法将EditText 值设置为MainActivity。应用程序崩溃了。请帮我解决问题。我真的很感激。
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();
}
}
使用这个程序的应用程序崩溃了。
【问题讨论】:
-
为此创建
Interface -
@MD 如果我想在一个 Activity 中使用多个 DialogFragment。如何导入多个接口?
标签: java android android-fragments