0

このレイアウトの何が問題なのかわかりません:

<ImageView
    android:id="@+id/seticonimage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:adjustViewBounds="true"
    android:contentDescription="@string/description"
    android:scaleType="fitStart"
    android:src="@drawable/cm7_icon" />

<EditText
    android:id="@+id/vsname"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/seticonimage"
    android:hint="@string/entername"
    android:inputType="text" />

<EditText
    android:id="@+id/vsdesc"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/vsname"
    android:layout_toLeftOf="@+id/seticonimage"
    android:hint="@string/shrtdesc"
    android:inputType="text" />

<Spinner
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/vsdesc"
    android:layout_toLeftOf="@+id/seticonimage"
    android:prompt="@string/icon_prompt" />

<TextView
    android:id="@+id/spinnerinfo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/spinner"
    android:layout_below="@+id/spinner"
    android:layout_toLeftOf="@+id/seticonimage" />

しかし、それはこのエラーで閉じます:

04-06 06:01:18.203: E/AndroidRuntime(1979): java.lang.ClassCastException: android.widget.Spinner cannot be cast to android.widget.EditText
04-06 06:01:18.203: E/AndroidRuntime(1979):     at com.manager.boot.free.MultiBootManager.onContextItemSelected(MultiBootManager.java:144)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at android.app.Activity.onMenuItemSelected(Activity.java:2509)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:3521)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:924)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at android.widget.AdapterView.performItemClick(AdapterView.java:292)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at android.widget.AbsListView$1.run(AbsListView.java:3168)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at android.os.Handler.handleCallback(Handler.java:605)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at android.os.Looper.loop(Looper.java:137)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at android.app.ActivityThread.main(ActivityThread.java:4424)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at java.lang.reflect.Method.invokeNative(Native Method)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at java.lang.reflect.Method.invoke(Method.java:511)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-06 06:01:18.203: E/AndroidRuntime(1979):     at dalvik.system.NativeStart.main(Native Method)

私はここで何が間違っているのですか?

        final View textEntryView = factory.inflate(R.layout.editvslayout,
                null);
        final EditText evsname = (EditText) textEntryView
                .findViewById(R.id.vsname);
        final EditText evsdesc = (EditText) textEntryView
                .findViewById(R.id.vsdesc);
        final Spinner spinner = (Spinner) textEntryView
                .findViewById(R.id.spinner);
        final ImageView i = (ImageView) textEntryView
                .findViewById(R.id.seticonimage);
4

4 に答える 4

5

ビルドにIDを割り当てた可能性があるため、プロジェクトをクリーンアップしてください。ただしSpinner、後でビルドせずR.javaに同じ名前を割り当てます。EditTextR.java

R.javaはすべてのコントロールの参照を保持するため、最初はスピナーに割り当てるのでR.java、このIDはスピナーであると考えてください。ただし、これをEditTextに割り当てたため、R.javaは、クリーンアップしてビルドするまでまったく認識されません。

R.java道徳的:時々あなたは手動で構築しなければなりません

于 2012-04-06T06:31:42.250 に答える
4

次のようなコードを実行したようです。

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

代わりに、次のように適切にキャストする必要があります。

Spinner mSpinner = (Spinner) findViewById (R.id.spinner);
于 2012-04-06T06:10:11.883 に答える
0

Eclipseを使用している場合は、 [プロジェクト] -> [クリーン]に移動すると、問題が解決することを願っています。それは私のために解決しました。

于 2014-11-01T11:06:23.787 に答える
0

Android Studio / IntelliJ 15を使用すると、「プロジェクトのビルド/クリーンアップ」を数回行う必要があります。それが機能しない場合(これはかなり頻繁に発生します)、Buildディレクトリを削除することになります。その後、それは動作します。理由を説明することはできませんが、IntelliJの1つが大好きです。私の場合、IntelliJはビューIDの値を混同しています。

于 2016-04-07T18:57:18.953 に答える