我有Tabbed活动,在Tab2.Java中, 我想在按钮单击上显示自定义对话框。 (对于自定义对话框,我有一个名为: dg_selct.xml 的单独xml文件。) 代码:
public class Tab2 extends Fragment {
Button btn;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tab2, container, false);
btn=(Button)v.findViewById(R.id.button2);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
View bView = getLayoutInflater().inflate(R.layout.dg_selct,null);
dialog.setView(bView);
AlertDialog customDialog = dialog.create();
customDialog.setTitle("Search");
customDialog.show();
}
});
这是 dg_selct.xml :
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/relativeLayout2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0">
<CheckBox
android:id="@+id/chkpg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/textView4"
android:layout_marginStart="63dp"
android:layout_marginTop="27dp"
android:checked="true"
android:text="@string/clspg"
android:textSize="23sp" />
<TextView
android:id="@+id/textView4"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="40dp"
android:layout_marginTop="42dp"
android:text="Mark the Groups, You want to Send the Message:"
android:textColor="#000000"
android:textSize="17sp" />
<CheckBox
android:id="@+id/chknur"
android:checked="true"
android:textSize="23sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chkpg"
android:layout_below="@+id/chkpg"
android:layout_marginTop="32dp"
android:text="@string/clsn" />
<CheckBox
android:id="@+id/chkprep"
android:checked="true"
android:textSize="23sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chknur"
android:layout_below="@+id/chknur"
android:layout_marginTop="30dp"
android:text="@string/clsp" />
<CheckBox
android:id="@+id/chkone"
android:checked="true"
android:textSize="23sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chkprep"
android:layout_below="@+id/chkprep"
android:layout_marginTop="35dp"
android:text="@string/cls1" />
<CheckBox
android:checked="true"
android:id="@+id/chktwo"
android:textSize="23sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chkone"
android:layout_below="@+id/chkone"
android:layout_marginTop="24dp"
android:text="@string/cls2" />
<CheckBox
android:id="@+id/chkthree"
android:checked="true"
android:textSize="23sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chktwo"
android:layout_below="@+id/chktwo"
android:layout_marginTop="26dp"
android:text="@string/cls3" />
<CheckBox
android:id="@+id/chkfour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chkthree"
android:layout_below="@+id/chkthree"
android:checked="true"
android:layout_marginTop="30dp"
android:text="@string/cls4"
android:textSize="23sp" />
<CheckBox
android:id="@+id/chkfive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/chknur"
android:layout_alignEnd="@+id/textView4"
android:layout_marginEnd="32dp"
android:checked="true"
android:text="@string/cls5"
android:textSize="23sp" />
<CheckBox
android:id="@+id/chksix"
android:textSize="23sp"
android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chkfive"
android:layout_alignTop="@+id/chknur"
android:text="@string/cls6" />
<CheckBox
android:id="@+id/chksvn"
android:checked="true"
android:textSize="23sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chksix"
android:layout_alignTop="@+id/chkprep"
android:text="@string/cls7" />
<CheckBox
android:id="@+id/chknine"
android:textSize="23sp"
android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chksvn"
android:layout_alignTop="@+id/chkone"
android:text="@string/cls9" />
<CheckBox
android:id="@+id/chkten"
android:textSize="23sp"
android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chknine"
android:layout_alignTop="@+id/chktwo"
android:text="@string/cls10" />
<CheckBox
android:id="@+id/chkextra"
android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/chkten"
android:layout_alignTop="@+id/chkthree"
android:text="@string/clsextra"
android:textSize="23sp" />
</RelativeLayout>
</android.support.constraint.ConstraintLayout>
此外,当我使用final AlertDialog.Builder dialog = new AlertDialog.Builder(Tab2.this);
而不是final AlertDialog.Builder dialog = new AlertDialog.Builder(getContext());
时,编译器会出错:“Builder中的Builder(android.Content.context)无法应用于com.abc.Tab2”
dg_select.xml 有一些CheckBoxes和一个TextView。但是当显示Dialog时,我只看到上面代码中提到的标题。 如何在此对话框中对dg_selct.xml进行充气?
答案 0 :(得分:1)
尝试使用 Dialog
代替 AlertDialog
Dialog dialog = new Dialog(getActivity());
dialog.setContentView(R.layout.dg_selct);
// to bind your control from dialog like this
final TextView textView= (TextView) dialog.findViewById(R.id.YourTextBiew);
final CheckBox checkBox= (CheckBox) dialog.findViewById(R.id.YourCheckBox);
final Button btnShow = (Button) findViewById(R.id.btnShow);
textView.setText("PREM");
dialog.setTitle("Search");
dialog.show();
更新
更改
RelativeLayout
hight&amp;宽度为match_parent
或wrap_content
,如下面的代码
<RelativeLayout
android:id="@+id/relativeLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent">
答案 1 :(得分:1)
在这里,我看到你的xml of dg_select.xml,你设置RelativeLayout的高度和宽度是0dp这就是为什么它无法显示你的复选框。您必须设置 RelativeLayout 高度或宽度 wrap_content 或 match_parent 。
AlertDialog 是活动的一部分,这就是为什么它无法参考fragment.So,你初始化AlertDialog你必须活动参考。