如何从DialogFragment的数据MainActivity在Android的? [英] How to get the Data from DialogFragment to MainActivity in 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屋!