"使用popupwindow避免将null作为视图根"传递

Ger*_*ort 2 null android popupwindow android-layout layout-inflater

所以,我的程序运行正常.我只留下三个警告(每个弹出窗口一个),它让我很烦恼,我一直在寻找一个能满足我需求的解决方案,但我似乎无法找到一个.

这是我的代码(其他两个popupwindows相似)

else if(id == R.id.action_resetstats){
        LayoutInflater layoutInflater  = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
        View popupView = layoutInflater.inflate(R.layout.resetpop, null);
        final PopupWindow popupWindow = new PopupWindow(popupView,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

        Button yesDismiss = (Button)popupView.findViewById(R.id.yesDismiss);
        yesDismiss.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v){
                SharedPreferences prefs = getSharedPreferences(savedData, Context.MODE_PRIVATE);
                Editor editor = prefs.edit();
                editor.clear();
                editor.commit();

                counterW = 0;
                counterL = 0;
                counterT = 0;
                counterTot = 0;
                timerTime = 3;

                popupWindow.dismiss();
            }
        });    

        popupWindow.showAsDropDown(yeDismiss, 50, 50);


        Button noDismiss = (Button)popupView.findViewById(R.id.noDismiss);
        noDismiss.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v){
                popupWindow.dismiss();
            }
        });    

        popupWindow.showAsDropDown(naDismiss, 50, 50);
Run Code Online (Sandbox Code Playgroud)

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:background="@android:color/black"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">

<RelativeLayout
    android:layout_width="230dp"
    android:layout_height="300dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_margin="2dp"
    android:background="@android:color/darker_gray"
    android:orientation="vertical" >

    <Button
        android:id="@+id/noDismiss"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="NO!" />

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:orientation="vertical" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="       Reset stats?"
            android:textSize="22sp" />
    </RelativeLayout>

    <Button
        android:id="@+id/yesDismiss"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:text="Yes" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/relativeLayout1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="34dp"
        android:text="Are you sure you want " />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:text="to reset your statistics?" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView2"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="39dp"
        android:text="!CANNOT BE UNDONE!" />

</RelativeLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

问题在于解决问题:

View popupView = layoutInflater.inflate(R.layout.resetpop, null);
Run Code Online (Sandbox Code Playgroud)

警告说:

Avoid passing null as the view root (needed to resolve layout parameters on the inflated layout's root element)
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个最好的方法?提前致谢!

Sub*_*iem 6

你可以使用:

context = popupView.getContext();
inflater.inflate(R.layout.resetpop, new LinearLayout(context), false);
Run Code Online (Sandbox Code Playgroud)

那应该解决警告.

  • 构建一个假父母是没有意义的。我宁愿简单地抑制警告。 (2认同)