java - fragment 中的 AutoCompleteTextView 获取 NullPointerException

标签 java android exception android-fragments nullpointerexception

我尝试在 fragment 中使用 AutoCompleteTextView 但我在 autoCompleteTextViewCountry.setAdapter(adapter); 处遇到异常我使用示例代码,但此示例是在标准 Activity 中使用它而不是 fragment ,所以我认为问题出在这里:

我的代码: ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.iMainActivity, android.R.layout.simple_dropdown_item_1line, COUNTRIES);

原始示例代码: ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, COUNTRIES);

全类:

    public class SettingsActivity extends Activity {
   public static SettingsActivity iSettingsActivity;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);
        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }

    public SettingsActivity(){
     iSettingsActivity=this;
    }

    public static class PlaceholderFragment extends Fragment {
        public PlaceholderFragment() {
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_settings, container, false);

            String COUNTRIES[]={"INDIA","ITALY","JAPAN","USA","ICELAND","INDONESIA","UK","IRAN","IRAQ"};
            final AutoCompleteTextView autoCompleteTextViewCountry = (AutoCompleteTextView)rootView.findViewById(R.id.autoCompleteTextView1);
            final TextView textViewSelectedCountry=(TextView)rootView.findViewById(R.id.textViewCountry);
            Button btnSelectedCountry=(Button)rootView.findViewById(R.id.buttonSelectCountry);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.iMainActivity,
                    android.R.layout.simple_dropdown_item_1line, COUNTRIES);

            autoCompleteTextViewCountry.setAdapter(adapter);
            autoCompleteTextViewCountry.setThreshold(1);

            btnSelectedCountry.setOnClickListener(new View.OnClickListener() {
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    String country=autoCompleteTextViewCountry.getText().toString();
                    textViewSelectedCountry.setText("Selected Country: "+country);
                }
            });
            return rootView;
        }
    }
}

完整的 xml:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".SettingsActivity$PlaceholderFragment"
android:background="@color/myBlack"
    >

<TextView
    android:id="@+id/textViewCountry"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="You Selected :"
    android:textColor="@color/white"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_below="@+id/autoCompleteTextView"
    android:layout_alignParentLeft="true" />

<AutoCompleteTextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/white"
    android:layout_below="@+id/autoCompleteTextView1"
    android:layout_marginTop="20dp"
    android:layout_alignParentLeft="true"
    android:ems="10"
    android:hint="Choose The Country"
    android:id="@+id/autoCompleteTextView">
    <requestFocus />
</AutoCompleteTextView>

<Button
    android:id="@+id/buttonSelectCountry"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="          OK          "`enter code here`
    android:layout_below="@+id/textViewCountry"
    android:layout_alignParentLeft="true" />

</RelativeLayout>

最佳答案

改变这一行

final AutoCompleteTextView autoCompleteTextViewCountry = (AutoCompleteTextView)rootView.findViewById(R.id.autoCompleteTextView1);

final AutoCompleteTextView autoCompleteTextViewCountry = (AutoCompleteTextView)rootView.findViewById(R.id.autoCompleteTextView);

您传递了错误的 ID,因此它给出了 NullPointerException

关于java - fragment 中的 AutoCompleteTextView 获取 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018366/

相关文章:

android - 设置 Android fragment 进入和退出转换?

java - 这个异常是在哪里捕获和处理的?

exception - 通过插件 Magento2 显示错误信息

java - 使用 JAX-RS 对 JAXB 数据进行实际验证?

android - 使用 Gradle 构建的 Android .aar 是否包含依赖项?

java - Eclipse egit 文档

android - 如何在不改变其他元素可视化的情况下添加 ScrollView?

java - 如何捕获 Firebase Auth 特定异常

java - Alfresco Web 服务身份验证

java - 如何同时完成()两个 Activity ?