我的Android应用程序中有一个对话框,其中包含一个按钮旁边的其他内容。现在我想改变那个Button的文本,但是我得到一个NullPointer异常。Android:在对话框中更改按钮的文本
该按钮打开一个新的对话框(日期选择器),它给MainActivity一个日期(作为字符串),然后我想要用于按钮。很明显,我可以声明按钮并定义他,但不能互动。在try语句(不确定它是否是语句)中,第一行工作,但如果我有第二行没有评论和调用它崩溃(或调用异常,我稍后添加了尝试部分)。我希望这足够具体。
下面是从按钮的代码,在MainActivity和对话框中的按钮生活:
对话框(的.java)
public class CreateDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstance) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
builder.setView(layoutInflater.inflate(R.layout.dialog_create, null))
.setMessage(R.string.create)
.setPositiveButton(R.string.create, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
return builder.create();
}
}
对话框(.XML)
<?xml version="1.0" encoding = "utf-8"?>
<RelativeLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:tools = "http://schemas.android.com/tools"
android:id = "@+id/dialog_create"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background="@color/create_bg_1"
tools:context = ".CreateDialogFragment">
<EditText
android:id = "@+id/dialog_create_name"
android:layout_width = "match_parent"
android:layout_height = "@dimen/textFieldHight"
android:text = "@string/create_name"
android:background="@color/white"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp" />
<Button
android:layout_width = "wrap_content"
android:layout_height = "@dimen/textFieldHight"
android:ems = "6"
android:text = "@string/date"
android:background="@color/white"
android:id = "@+id/create_date_button"
android:onClick = "pickDate"
android:layout_below = "@id/dialog_create_name" />
</RelativeLayout>
MainActivity - >导致调用对话框的问题和方法的方法(.java - 部分)
public void openCreate(View view) {
createDialogFragment = new CreateDialogFragment();
createDialogFragment.show(fragmentManager, "TEST");
updateSelectedButton(3);
}
这导致问题:
public void dateForWhatever(int year, int month, int day) {
DateFormatter dateFormatter = new DateFormatter();
String date = dateFormatter.toStringDE(year, month, day);
try {
Button createDateButton = (Button) findViewById(R.id.create_date_button);
createDateButton.setText(date);
} catch (Exception cannotFindButton) {
System.out.println("Geh kacken\n" + year + " " + month + " " + day);
}
}
-1因为没有描述你的答案如何解决op问题。如果您添加说明,我会加倍努力。 – 2014-09-20 12:33:27
我真的不明白你的答案。我想改变positiveButton和NegativeButton,并且按钮在runtume中被定义为... – JRsz 2014-09-20 13:49:40