显示 TextView 时对话框片段(自定义布局)不起作用
Dialog Fragment(custom layout) is not working when displaying TextView
我已经阅读了这里的一些帖子,但它们似乎没有解决我的问题。
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();
}
}
在我添加 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
在 onCreateDialog()
中执行此操作
View v;
inflater=getActivity().getLayoutInflater();
v=inflater.inflate(R.layout.dialog_layout,null);
TextView tv=(TextView)v.findViewById(R.id.textView);
tv.setText("my text here");**
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
tv 是 null.Maybe 你应该在布局中定义一个 TextView 标签 dialog_layout。
TextView tv=(TextView)v.findViewById(R.id.textView);
tv.setText("my text here");
并使用此代码找到它。
我认为错误在这里:
TextView tv=(TextView)getActivity().findViewById(R.id.textView);
替换
获取活动()
和
v(你正在膨胀的布局)
试试这个,
TextView tv=(TextView)v.findViewById(R.id.textView);
您的对话框视图是 dialog_layout,这意味着 dialog_layout 中有一个文本视图。我对吗?那你怎么没有从 dialog_layout 视图中获取文本视图?
build.setView(v)
TextView tv=(TextView)getActivity().findViewById(R.id.textView); //--> which view is the textview from?
tv.setText("my text here");
return build.create();
我已经阅读了这里的一些帖子,但它们似乎没有解决我的问题。
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();
}
}
在我添加 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
在 onCreateDialog()
中执行此操作View v;
inflater=getActivity().getLayoutInflater();
v=inflater.inflate(R.layout.dialog_layout,null);
TextView tv=(TextView)v.findViewById(R.id.textView);
tv.setText("my text here");**
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
tv 是 null.Maybe 你应该在布局中定义一个 TextView 标签 dialog_layout。
TextView tv=(TextView)v.findViewById(R.id.textView);
tv.setText("my text here");
并使用此代码找到它。
我认为错误在这里:
TextView tv=(TextView)getActivity().findViewById(R.id.textView);
替换 获取活动() 和 v(你正在膨胀的布局)
试试这个,
TextView tv=(TextView)v.findViewById(R.id.textView);
您的对话框视图是 dialog_layout,这意味着 dialog_layout 中有一个文本视图。我对吗?那你怎么没有从 dialog_layout 视图中获取文本视图?
build.setView(v)
TextView tv=(TextView)getActivity().findViewById(R.id.textView); //--> which view is the textview from?
tv.setText("my text here");
return build.create();