<質問>
AlertDialogを表示するコードを調べていると、LayoutInflater
を使うコードが紹介されています。でもLayoutInflaterを使わなくても、同じ見た目、同じ動きをするコードも作れます。LayoutInflaterを使う場合と使わない場合では、例えばセキュリティに影響するとか、不具合がでるとか、LayoutInflaterを使ったほうがいい理由や両方法の違いはあるのでしょうか?
<参考コード>
App/res/layout/dialog.xml
dialog
1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" android:layout_width="match_parent" 4 android:layout_height="match_parent"> 5 6 <TextView 7 android:layout_width="wrap_content" 8 android:layout_height="wrap_content" 9 android:text="Dialog1"/> 10</LinearLayout>
App/java/project/MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new MyDialog1().show(getSupportFragmentManager(),null); // new MyDialog2().show(getSupportFragmentManager(),null); } }
■ LayoutInflaterを使ってdialog.xmlをダイアログにインフレーとする場合
App/java/project/MyDialog1.java
public class MyDialog extends AppCompatDialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); builder .setView(inflater.inflate(R.layout.dialog,null)) .setPositiveButton("OK-1", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // Ok-1押下処理 } }); builder.setCancelable(false); return builder.create(); } }
■ LinearLayoutインスタンスを生成してダイアログを表示する場合
App/java/project/MyDialog2.java
public class MyDialog2 extends AppCompatDialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LinearLayout linearLayout = new LinearLayout(getActivity()); TextView textView = new TextView(getActivity()); textView.setText("Dialog2"); linearLayout.addView(textView); builder .setView(linearLayout) .setPositiveButton("OK-2",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // OK-2押下処理 } }); builder.setCancelable(false); return builder.create(); } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/11 02:35