构建Android应用并遇到一些麻烦。我很感激任何帮助!
我创建了一个扩展DialogFragment(Account_Create_Error)的类,我从Activity A调用它。我想在Activity中设置此DialogFragment中的TextView字段。我在dialogfragment中创建了一个方法
public void setError(String message) {
TextView error = (TextView)getActivity().findViewById(R.id.message);
error.setText(message);
}
然后我通过
在活动A中使用此方法Account_Create_Error error = new Account_Create_Error();
error.show(getFragmentManager(), "error");
error.setError(json.getString("response"));
我似乎从findViewById获得了一个nullpointer异常。
如果提供更多我的代码会有所帮助,请告诉我。
谢谢!
答案 0 :(得分:4)
我们可以使用构造函数将数据传递给对话框片段。
UserActionDialogFragment dialog = UserActionDialogFragment.newInstance(errorMesssage);
dialog.show(getFragmentManager(), TAG);
UserActionDialogFragment extends DialogFragment
public class NotificationDialogFragment extends DialogFragment {
private static final String TAG = "NotificationDialogFragment";
private String mMessageToDisplay;
public static NotificationDialogFragment newInstance(
String message) {
NotificationDialogFragment infoDialog = new NotificationDialogFragment();
mMessageToDisplay = message
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
alertDialog.setMessage(mMessageToDisplay);
alertDialog.setNeutralButton(R.string.label_ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
});
return alertDialog.create();
}
}
答案 1 :(得分:1)
尝试从构建器中设置的查看器获取EditText,而不是getActivity()。这应该够了
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
LayoutInflater inflater = getActivity().getLayoutInflater();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = inflater.inflate(R.layout.your_dialog, null);
builder.setView(view);
EditText error = (EditText)(view.findViewById(R.id.message));
....
return builder.create();
}
如上所述,我没有使用onViewCreated方法。根据{{3}}
中的建议,在构建器中设置查看器答案 2 :(得分:0)
亲爱的朋友,我的一个项目也遇到了同样的问题。 我用这种方式解决它: 创建一个接口并在我的fragment类中实现它。在我实现的函数中,我更新了我的textView。 (在您的情况下,您需要在调用此函数之前初始化errorTV。)