【问题标题】:Unable to cast text with Spinner in xml file无法在 xml 文件中使用 Spinner 投射文本
【发布时间】:2019-11-18 04:27:22
【问题描述】:

我是 android 新手,我正在尝试开发一个 UI,但它给了我以下错误,我正在开发包含该微调器旁边的文本的 UI...

java.lang.ClassCastException: android.widget.Spinner 无法转换为 android.widget.TextView

还有我的setting.xml

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

    <TextView
        android:id="@+id/minute"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/mile"
        android:layout_below="@+id/time"
        android:text="@string/min" />

    <TextView
        android:id="@+id/distance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/time"
        android:layout_marginTop="34dp"
        android:text="@string/Distance" />

    <TextView
        android:id="@+id/mile"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/notification"
        android:layout_below="@+id/distance"
        android:text="@string/mile"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/notification"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/minute"
        android:layout_marginLeft="41dp"
        android:layout_marginTop="47dp"
        android:text="@string/Notifications"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/notification"
        android:layout_below="@+id/mile"
        android:layout_marginTop="62dp"
        android:text="@string/Time" />

    <Spinner
        android:id="@+id/distanceview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/time"
        android:layout_alignTop="@+id/distance"
        android:layout_marginLeft="22dp"
        android:layout_toRightOf="@+id/mile" />

    <Spinner
        android:id="@+id/timeview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/notification"
        android:layout_alignLeft="@+id/distanceview"
        android:layout_alignTop="@+id/time" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/timeview"
        android:layout_centerVertical="true"
        android:layout_marginLeft="24dp" />

</RelativeLayout>

还有我的java代码

public class SettingsActivity extends SherlockActivity implements AdapterView.OnItemSelectedListener {
    private TextView distance, time;
    private Spinner spin;
    String spin_val;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings);

        addDistanceRadioButtons();
        addTimeRadioButtons();
    }

    public void addDistanceRadioButtons() {
        spin = (Spinner) findViewById(R.id.distanceview);
        final String[] item = { "0.1", "0.2", "0.4", "0.6", "0.8", "1.0", "1.2" }
        spin.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {
                // TODO Auto-generated method stub
                spin_val = item[position];

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }

        });
        ArrayAdapter<String> spin_adapter = new ArrayAdapter<String>(getBaseContext(), R.layout.settings, item);
        spin.setAdapter(spin_adapter);
    }
}

【问题讨论】:

  • 你的java代码在哪里???
  • 发布您的代码和完整的 logcat
  • 运行项目后清理项目...
  • 请贴出你的java类代码

标签: android android-layout textview spinner


【解决方案1】:

这可能是因为您试图将 Spinner 作为 TextView

看来你的代码是这样的:

Spinner mSpinner = (TextView) findViewById (R.id.spinner);

相反,它应该正确地转换为:

Spinner mSpinner = (Spinner) findViewById (R.id.spinner);

或者

您可以使用Spinner id 代替TextView Id

------------------------------------------ -------------------------------------------------- -------------------------------------

你的问题@这一行:id distanceTextView 不是 Spinner

 spin = (Spinner) findViewById(R.id.distance);

我认为您需要使用 id distanceview 而不是 od distance

【讨论】:

  • 那我该怎么办...,请给我建议
  • 我已经更新了我的帖子。请在您的活动中检查。
  • 我什至谷歌,我得到了这个链接,我读过,那不是我的问题......
  • 然后分享您的活动。只有我们才能找到问题。
  • 即使我试过了,当我点击那个按钮时,活动正在关闭并得到同样的异常......
【解决方案2】:

这一行:

spin = (Spinner) findViewById(R.id.distance);

应该是

spin = (Spinner) findViewById(R.id.distanceview);

【讨论】:

    【解决方案3】:

    我认为你给 spinner 提供了错误的 ID。也许您将文本 id 提供给微调器,这就是您得到这个的原因。如果您在此处粘贴您的 Java 代码,那么我们也会看到该错误。

    或者在运行您的项目后清理您的项目。有时某些视图会保留其资源 ID 并将所有 ID 混合在一起,因此只需清理并运行即可。

    【讨论】:

      猜你喜欢
      • 2014-05-23
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 2011-12-24
      • 2018-01-23
      • 2017-03-17
      相关资源
      最近更新 更多