【发布时间】:2015-08-07 00:57:57
【问题描述】:
我想从我的活动中启动一个对话框。
对话框返回一些对我有用的结果。
我怎样才能做到这一点?
我不知道要在“?”(下面提到)中输入什么,因为我的 DialogClass 扩展了 Fragment 而不是活动。
请更正以下代码:
我的活动中的代码片段:
buttonDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(this,?);
startActivityForResult(intent,1);
}
});
//On Activity result method
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK) return;
if (requestCode == GlobalVariables.REQUEST_CODE_LIST_NAME) {
Log.d("Result received","");
}
}
我的 DialogFragment:
public static class MyDialogClass extends DialogFragment
{
private String textListName;
@Override
public Dialog onCreateDialog(Bundle bundle)
{
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(TagClass.ENTER_NAME);
final EditText input = new EditText(getActivity());
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
builder.setPositiveButton(TagClass.OK, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
textListName = input.getText().toString();
if (!textListName.equals("")) {
Intent i = new Intent();
i.putExtra("ListName", textListName);
startActivityForResult(i,1);
} else
input.setError(TagClass.ERROR_BLANK_FIELD);
}
});
builder.setNegativeButton(TagClass.CANCEL, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
return builder.create();
}
}
【问题讨论】:
-
Fragment 应该用作 Activity 的一部分。您可以使用 Handler 来处理 Fragment 生成的结果。使用 FragmentTransaction 在您的活动中显示片段。不是 startActivity()?检查这个developer.android.com/guide/components/fragments.html#Managing
标签: java android android-intent android-alertdialog start-activity