显示 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();