android - 微调器的数组适配器不能在 fragment 中工作,需要资源 ID

标签 android android-arrayadapter

我收到一个错误,指出 ArrayAdapter 没有资源 ID,但是这里使用了资源 ID,我在一个 Activity 中使用了类似的代码没有问题,但是这是在一个 fragment 中。有什么我应该做的不同的事情,因为它在 fragment 中吗?这就是它不起作用的原因?

我做了一个 xml 布局,并根据需要在其中放置了一个 textView。

关于如何让它工作的任何想法?

堆栈跟踪

 07-16 20:11:44.290: E/AndroidRuntime(14278): FATAL EXCEPTION: main
 07-16 20:11:44.290: E/AndroidRuntime(14278): java.lang.IllegalStateException:   ArrayAdapter requires the resource ID to be a TextView
 07-16 20:11:44.290: E/AndroidRuntime(14278):   at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
 07-16 20:11:44.290: E/AndroidRuntime(14278):   at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)

fragment 中的 oncreateview 方法。此方法是所有操作的地方

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View result=inflater.inflate(R.layout.small_tank_layout11, container, false);

        activity = getActivity();

         // set shared preferences variable with shared preferences object for use
        prefs = activity.getSharedPreferences("smallTankPreferences", Context.MODE_PRIVATE);

        textViewOne = (TextView) result.findViewById(R.id.textView1);
        textViewTwo = (TextView) result.findViewById(R.id.textView2);
        spinnerOne = (Spinner) result.findViewById(R.id.spinner1);
        buttonOne = (Button) result.findViewById(R.id.button1);

        // get stored title quesion and set text
        smallTank11question = prefs.getString("smallTank11question", "");
        textViewOne.setText(smallTank11question);

        // get arraylist from json string
        Gson gson = new Gson();
         Type type = new TypeToken<ArrayList<String>>(){}.getType();
         smallTank11WeatherNames = prefs.getString("smallTank11WeatherNames", "");
         smallTank11WeatherNamesArray = gson.fromJson(smallTank11WeatherNames, type);

         // get the weather selected indicator stored in shared prefereces
         smallTank11WeatherSelected = prefs.getInt("smallTank11WeatherSelected", -1);

    //put strings of weather selections into spinner
       ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(activity, R.layout.small_tank_spinnerlayout_one, smallTank11WeatherNamesArray);  // layout for spinner itself
        dataAdapter.setDropDownViewResource(R.layout.small_tank_spinnerlayout_one); // layout for spinner dropdown items
        spinnerOne.setAdapter(dataAdapter);


        return result;

    } // end oncreateview

在此处编辑我添加了 small_tank_spinnerlayout_one.xml 的代码

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

最佳答案

在这一行中:

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(activity, R.layout.small_tank_spinnerlayout_one, smallTank11WeatherNamesArray);

您应该从您的布局中指向要使用的 TextView。为此,您应该像这样创建您的 ArrayAdapter:

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(activity, R.layout.small_tank_spinnerlayout_one, R.id.textView1, smallTank11WeatherNamesArray);

您首先指向用于Spinner 项目的布局和该布局中TextView 的id。如果您正在使用

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(activity, R.layout.small_tank_spinnerlayout_one, smallTank11WeatherNamesArray);

你的布局应该有 TextView with id : android:id/textView1

关于android - 微调器的数组适配器不能在 fragment 中工作,需要资源 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17675051/

相关文章:

java - ViewPager 在 Fragment 中包含 Fragment

android - 如何在 for 循环中使用 drawRect 方法?

android - 适用于 Android 应用程序设计的 PSD 文件尺寸和分辨率

java - Android ListView header

java - Android:ListView 告诉我它已填充但未显示项目

android - java.lang.RuntimeException : Unable to instantiate receiver 错误

java - 在库项目内的 Activity 中使用 Android 通用图像加载器

android - 如何将另一个适配器放入我的自定义适配器中(来自一个对象的信息)

android - 数组适配器在后台异常中修改

java - 从 ListView 中删除项目