我已经阅读了一些帖子,但他们似乎没有解决我的问题。显示TextView时Dialog Fragment(自定义布局)不起作用
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button)findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog my_alert=new dialog();
my_alert.show(getFragmentManager(),"");
}
});
}
}
dialog.java
public class dialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder build=new AlertDialog.Builder(getActivity());
LayoutInflater inflater;
View v;
inflater=getActivity().getLayoutInflater();
v=inflater.inflate(R.layout.dialog_layout,null);
build.setView(v);
return build.create();
}
}
上述编码是WO在添加textview之前进行编辑。
但是,我想要做的是在自定义布局中显示textview。如果我在build.setView(v)
下面添加以下编码,它将退出。
build.setView(v)
TextView tv=(TextView)getActivity().findViewById(R.id.textView);
tv.setText("my text here");
return build.create();
logcat的错误
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
AlertDialog.Builder builder = new AlertDialog.Builder(YourActivity.this);不要从DialogFragment扩展并将构建器用于您的活动。如果不扩展,可以使用builder.setView()来使用自定义视图 – Bob
,这意味着我必须放入主要活动?我想分开java类。并为您的解决方案,你能解释更多? – gosulove
检查您的dialog_layout.xml是否具有ID为“textView”的TextView – sJy