Android 无法访问PopupWindow中布局中的资源,对象为空引用

Android 无法访问PopupWindow中布局中的资源,对象为空引用,android,android-fragments,Android,Android Fragments,我有一个android应用程序,当点击侧栏上的一个选项时,它会进入一个片段,然后进入另一个具有可点击单选按钮的片段。单击这些按钮时,将创建一个弹出窗口,其中包含一些文本字段 基本上这就是流动的方式 活动-->片段1-->片段2-->弹出窗口 当我尝试访问此popupWindow中的资源时,例如: damageComponenetAutoCompleteTextview = (AutoCompleteTextView) findViewById(R.id.popup_damage_componen

我有一个android应用程序,当点击侧栏上的一个选项时,它会进入一个片段,然后进入另一个具有可点击单选按钮的片段。单击这些按钮时,将创建一个弹出窗口,其中包含一些文本字段

基本上这就是流动的方式

活动-->片段1-->片段2-->弹出窗口

当我尝试访问此popupWindow中的资源时,例如:

damageComponenetAutoCompleteTextview = (AutoCompleteTextView) findViewById(R.id.popup_damage_component_item);
damageComponenetAutoCompleteTextview.requestFocus();
在行damageComponenetAutoCompleteTextview.requestFocus()中这给了我一个错误

尝试对空对象引用调用虚拟方法

我相信这是因为我在调用资源时所指的错误观点。希望有人能指出我做错了什么。提前谢谢

这是我用来创建popupWindow的方法

public void showDamagedItemEntryPopup(RadioButton radioButton, View view){

    LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    ViewGroup viewG = ((ViewGroup)view.findViewById(R.id.damaged_comp_popup));

    //I tried passing the root view to inflate() method instead of passing it null. Didn't work.
    //View popupView = layoutInflater.inflate(R.layout.component_selection_popup, null);

    View popupView = layoutInflater.inflate(R.layout.component_selection_popup, null);

    final PopupWindow popupWindow = new PopupWindow(
            popupView,
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);

    popupWindow.setAnimationStyle(R.style.popupAnimation);

    //I tried setting the content view manually but didnt work        
    //popupWindow.setContentView(view.findViewById(R.id.damaged_comp_popup));

    Button buttonClose = (Button)popupView.findViewById(R.id.close_add_component_btn);

    // Close button damaged item popop window
    buttonClose.setOnClickListener(new Button.OnClickListener(){

        @Override
        public void onClick(View v) {
            popupWindow.dismiss();
        }
    });


    originalAmount = (EditText)this.findViewById(R.id.popup_add_component_original_amount);
    customerContribution = (EditText)this.findViewById(R.id.popup_percentage);
    quantity = (EditText)this.findViewById(R.id.popup_quantity);
    finalAmount = (EditText)this.findViewById(R.id.popup_add_component_final_amount);
    remarks = (EditText)this.findViewById(R.id.popup_add_component_remarks);

    // Item Spinner
    itemSpinnerArray = new ArrayList<String>();
    itemSpinnerArray.add("Select Item");

    // Status Spinner
    ArrayList<String> statusSpinnerArray = new ArrayList<String>();
    statusSpinnerArray.add("MR");
    statusSpinnerArray.add("DR");
    statusSpinnerArray.add("SP");

    // Error comes at this point initially. When these Resource access line codes are commented, the popup works fine.

    damageComponenetAutoCompleteTextview = (AutoCompleteTextView) findViewById(R.id.popup_damage_component_item);
    damageComponenetAutoCompleteTextview.requestFocus();
    ArrayAdapter<String> itemSpinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, itemSpinnerArray);
    damageComponenetAutoCompleteTextview.setThreshold(1);
    damageComponenetAutoCompleteTextview.setAdapter(itemSpinnerArrayAdapter);

    damageComponenetAutoCompleteTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //int index = cityNames.indexOf(actvCity.getText().toString());
            itemSpinnerValue = (String) parent.getItemAtPosition(position);
            Log.d("SK-->", "----------------------------------------------------------");
            Log.d("SK-->","itemSpinnerValue: " + itemSpinnerValue);
        }
    });

    statusSpinner = (Spinner)this.findViewById(R.id.popup_status_spinner);
    ArrayAdapter<String> statusSpinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, statusSpinnerArray);
    statusSpinner.setAdapter(statusSpinnerArrayAdapter);

    //Creating a text Watcher
    TextWatcher textWatcher = new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {
            //here, after we introduced something in the EditText we get the string from it
            //String answerString = originalAmount.getText().toString();

            if (originalAmount.getText().toString().trim().equals("") || customerContribution.getText().toString().trim().equals("")
                    || quantity.getText().toString().trim().equals("")) {

                // Error , one or more editText are empty

            }
            else
            {
                calculateFinalAmount();
            }

            //and now we make a Toast
            //modify "yourActivity.this" with your activity name .this
            //Toast.makeText(yourActivity.this,"The string from EditText is: "+answerString,0).show();

        }
    };

    // Adding Text Watcher to our text boxes
    originalAmount.addTextChangedListener(textWatcher);
    customerContribution.addTextChangedListener(textWatcher);
    quantity.addTextChangedListener(textWatcher);

    // Show the popup
    popupWindow.showAtLocation(view, Gravity.CENTER, 0, 0);

}
public void showDamagedItem弹出窗口(RadioButton RadioButton,视图){
LayoutInflater LayoutInflater=(LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
ViewGroup viewG=((ViewGroup)view.findViewById(R.id.discovered_comp_popup));
//我尝试将根视图传递给inflate()方法,而不是将其传递为null。不起作用。
//View popupView=LayoutFlater.充气(R.layout.component\u selection\u popup,null);
View popupView=LayoutFlater.充气(R.layout.component\u selection\u popup,null);
最终PopupWindow PopupWindow=新PopupWindow(
弹出视图,
ViewGroup.LayoutParams.WRAP_内容,
ViewGroup.LayoutParams.WRAP_内容);
popupWindow.setAnimationStyle(R.style.popupAnimation);
//我尝试手动设置内容视图,但没有成功
//popupWindow.setContentView(view.findViewById(R.id.discovered_comp_popup));
按钮按钮关闭=(按钮)弹出视图.findViewById(R.id.close\u add\u component\u btn);
//关闭按钮损坏的物品弹出窗口
buttonClose.setOnClickListener(新建Button.OnClickListener(){
@凌驾
公共void onClick(视图v){
popupWindow.disclose();
}
});
originalAmount=(EditText)this.findViewById(R.id.popup\u add\u component\u original\u amount);
customerContribution=(EditText)this.findViewById(R.id.popup\u百分比);
数量=(EditText)this.findViewById(R.id.popup\u数量);
finalAmount=(EditText)this.findViewById(R.id.popup\u add\u component\u final\u amount);
备注=(EditText)this.findViewById(R.id.popup\u add\u component\u备注);
//项目微调器
itemspinnerary=newarraylist();
添加(“选择项”);
//状态微调器
ArrayList StatusSpinneArray=新建ArrayList();
StatusSpinNerray.add(“MR”);
StatusSpinNerray.add(“DR”);
StatusSpinNerray.add(“SP”);
//错误最初出现在这一点上。当这些资源访问行代码被注释时,弹出窗口工作正常。
damageComponenetAutoCompleteTextview=(AutoCompleteTextView)findViewById(R.id.popup\u损坏\组件\项目);
damageComponenetAutoCompleteTextview.requestFocus();
ArrayAdapter ItemSpinNerayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u spinner\u dropdown\u ItemSpinNerary);
损坏组件AutoCompleteTextView.setThreshold(1);
损坏组件自动完成TextView.setAdapter(ItemSpinNearrayaAdapter);
DamageComponeneTaAutoCompleteTextView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//int index=cityNames.indexOf(actvCity.getText().toString());
itemSpinnerValue=(字符串)parent.getItemAtPosition(位置);
Log.d(“SK-->”,“------------------------------------------------------------------”;
Log.d(“SK-->”,“itemSpinnerValue:”+itemSpinnerValue);
}
});
statusSpinner=(Spinner)this.findViewById(R.id.popup\u status\u Spinner);
ArrayAdapter StatusSpinNerayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u下拉菜单\u项StatusSpinNerary);
statusSpinner.setAdapter(StatusSpinNearrayaAdapter);
//创建文本监视程序
TextWatcher TextWatcher=新的TextWatcher(){
@凌驾
更改前的公共无效(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void onTextChanged(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void PostTextChanged(可编辑){
//在这里,我们在EditText中引入了一些内容之后,我们从中获得了字符串
//字符串answerString=originalAmount.getText().toString();
如果(originalAmount.getText().toString().trim().equals(“”| | customerContribution.getText().toString().trim().equals(“”)
||quantity.getText().toString().trim()等于(“”){
//错误,一个或多个editText为空
}
其他的
{
calculateFinalAmount();
}
//现在我们干杯
//用您的活动名称修改“yourActivity.this”。此
//Toast.makeText(yourActivity.this,“EditText中的字符串是:“+answerString,0.show()”;
}
};
//向文本框中添加文本监视程序
originalAmount.addTextChangedListener(textWatcher);
customerContribution.addTextChangedListener(textWatcher);
quantity.addTextChangedListener(textWatcher);
//显示弹出窗口
弹出窗口显示位置(视图,重心,0,0);
}
这是我用于弹出窗口的XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/damaged_comp_popup"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/popup_wire">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_margin="2dp"
    android:background="@color/popup_background">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <AutoCompleteTextView
            android:id="@+id/popup_damage_component_item"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="20dp"
            android:layout_marginBottom="5dp"
            android:hint="@string/damaged_componenet_item_string"/>

        <Spinner
            android:id="@+id/popup_status_spinner"
            android:layout_width="122dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/popup_damage_component_item"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="0dp"
            android:layout_marginBottom="5dp"
            android:layout_marginRight="5dp" />

        <EditText
            android:id="@+id/popup_add_component_original_amount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/popup_damage_component_item"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="22dp"
            android:layout_toRightOf="@+id/popup_status_spinner"
            android:ems="10"
            android:hint="@string/original_amount_string"
            android:inputType="number" />

        <EditText
            android:id="@+id/popup_percentage"
            android:layout_width="52dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/popup_status_spinner"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="2dp"
            android:layout_marginTop="22dp"
            android:ems="10"
            android:hint="@string/percentage_string"
            android:inputType="number" />

        <TextView
            android:id="@+id/popup_percentageMark"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/popup_percentage"
            android:layout_toRightOf="@+id/popup_percentage"
            android:text="@string/percentage_string"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_marginLeft="1dp"
            android:layout_marginRight="0dp"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp" />

        <EditText
            android:id="@+id/popup_quantity"
            android:layout_width="46dp"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/popup_percentage"
            android:layout_alignBottom="@+id/popup_percentage"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="6dp"
            android:layout_marginTop="5dp"
            android:layout_toRightOf="@+id/popup_percentageMark"
            android:ems="10"
            android:hint="@string/quantity_string"
            android:inputType="number" />

        <EditText
            android:id="@+id/popup_add_component_final_amount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/popup_quantity"
            android:layout_alignBottom="@+id/popup_quantity"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_alignParentRight="true"
            android:layout_marginTop="5dp"
            android:layout_toRightOf="@+id/popup_quantity"
            android:ems="10"
            android:hint="@string/final_amount_string"
            android:inputType="number" />

        <EditText
            android:id="@+id/popup_add_component_remarks"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/popup_percentage"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="22dp"
            android:ems="10"
            android:hint="@string/remarks_string"
            android:inputType="text|textMultiLine" />

        <Button
            android:id="@+id/add_component_btn"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="200dp"
            android:layout_below="@+id/popup_add_component_remarks"
            android:background="@drawable/correct"
            android:layout_marginBottom="15dp"
            android:onClick="onSaveItem"/>

        <Button
            android:id="@+id/close_add_component_btn"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/popup_add_component_remarks"
            android:layout_toRightOf="@+id/add_component_btn"
            android:layout_marginLeft="10dp"
            android:background="@drawable/cancel"/>

    </RelativeLayout>

</LinearLayout>


您的
损坏组件自动完成文本视图似乎属于您在顶部充气的
弹出窗口

 damageComponenetAutoCompleteTextview = (AutoCompleteTextView) findViewById(R.id.popup_damage_component_item);
damageComponenetAutoCompleteTextview = (AutoCompleteTextView) popupView.findViewById(R.id.popup_damage_component_item);