将对话框视图分配给另一个视图

时间:2014-10-09 08:06:13

标签: android

我正在创建一个对话框并设置布局的setContentView。我以编程方式在对话框setContentView中添加按钮,图像到布局。现在我如何将对话框视图分配给另一个视图。 这是一个布局分配给下面的视图

 View getview=R.layout.tamil_alphabet_speak_word;

同样,如何将对话框视图分配给另一个视图。由于我以编程方式将所有元素添加到视图“TamilAlphabets”中,因此子元素为null,它返回以下代码。

 Alphbetdialog=new Dialog(TamilAlphabets.this);
   Alphbetdialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
   Alphbetdialog.setContentView(R.layout.tamil_alphabetsdialog);
    (adding elements to the layout "TamilAlphabets" code
      ..............
             )
   LayoutInflater inflator=(LayoutInflater)TamilAlphabets.this.getSystemService
   (TamilAlphabets.this.LAYOUT_INFLATER_SERVICE);
            View row=inflator.inflate(tamil_alphabetsdialog, Parent,false);
            LinearLayout l1=(LinearLayout)row.findViewById(R.id.alphabetlayout1);                           
            ViewGroup vg=(ViewGroup)l1;
            vg.getChildCount();

所以我需要将对话框视图分配给另一个视图我该怎么做。 我需要这样的东西

   View getview=<I need dialog box view>

1 个答案:

答案 0 :(得分:0)

您应该避免直接使用Dialog类,而是使用Dialog子类或DialogFragment

https://developer.android.com/guide/topics/ui/dialogs.html

  

Dialog类是对话框的基类,但您应该避免直接实例化Dialog。而是使用以下子类之一:   

  AlertDialog   一个对话框,可以显示标题,最多三个按钮,可选项列表或自定义布局。   

DatePickerDialog或TimePickerDialog   带有预定义UI的对话框,允许用户选择日期或时间。

在任何情况下我都猜测你想要的是一个自定义对话框,而在这种情况下使用DialogFragment类的recomendaded是一个例子

对话框片段布局

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/textView1"
      android:layout_width="match_parent"
      android:layout_height="match_parent">

对话类

public class DialogExampleFragment扩展DialogFragment {

private static final String ARG_PARAM = "extra:PARAM";
private String mText;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle arguments = getArguments();

    mText = arguments.getString(ARG_PARAM);


}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    Dialog dialog = super.onCreateDialog(savedInstanceState);

    dialog.setTitle("title");

    return dialog;
}

public static DialogExampleFragment newInstance(String message) {
    Bundle args = new Bundle();

    args.putSerializable(ARG_PARAM, message);

    DialogExampleFragment fragment = new DialogExampleFragment();

    fragment.setArguments(args);

    return fragment;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View root = inflater.inflate(R.layout.fragment_dialog_example, container, false);




    TextView t = (TextView) root.findViewById(R.id.textView1);

    t.setText(mText);

    return root;
}

}

显示为对话框

DialogExampleFragment.newInstance("Message")
                    .show(getFragmentManager(), "dialog");

注意,因为DialogFragment是一个片段,它具有能够显示为对话框或常规片段的优势,您可以获得我在上面发布的链接上的所有信息