ダイアログをに変換中ですDialogFragments
。私はここの指示に従っていますが、彼らはでそれを使用しているようで、Activity
私はでそれを使用していFragment
ます。Listener
フラグメントに戻るを作成しましたが、呼び出すと:getActivity()
がスローされます。NullPointerException
public class DialogTextAdd extends DialogFragment implements OnEditorActionListener {
private EditText mText;
public interface DialogTextAddListener {
void onDialogTextAdd(final String inputText);
}
public DialogTextAdd() {
// Empty constructor required for DialogFragment
}
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.dialog_edit, container);
mText = (EditText)view.findViewById(R.id.Text_add);
getDialog().setTitle("Add Text");
// Show soft keyboard automatically
mText.requestFocus();
getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mText.setOnEditorActionListener(this);
return view;
}
@Override
public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
if (EditorInfo.IME_ACTION_DONE == actionId) {
new MyFragment().onDialogTextAdd(mText.getText().toString()); //think this is my problem
this.dismiss();
return true;
}
return false;
}
}
public class MyFragment extends SherlockListFragment implements DialogKeywordAddListener
{
@Override
public void onDialogTextAdd(final String text) {
Toast.makeText(getActivity(), text + " saved", Toast.LENGTH_SHORT).show();
}
@Override
public void onAttach(Activity act) {
super.onAttach(act);
}
}
このコードを使用すると、次のように機能します。
MyFragment mf = new MyFragment();
Bundle args = new Bundle();
args.putString("text", mText.getText().toString());
mf.setArguments(args);
getActivity().getSupportFragmentManager().beginTransaction().add(mf, "my_fragment").commit();