ここで投稿の一部を読みましたが、問題を解決していないようです。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();
}
}
上記コーディングはwoはあります私はtextviewを追加する前にrking。
しかし、私がしたいのは、カスタムレイアウトで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
を使用すると、mainactivityを内部に配置する必要があります。私はJavaクラスを分離したいと思います。あなたのソリューションについて、もっと説明できますか? – gosulove
dialog_layout.xmlにIDが "textView"のTextViewがあるかどうかを確認します – sJy