SurfaceView: ClassCastException, не может начать деятельность - PullRequest
2 голосов
/ 29 ноября 2010

Попытка заставить приложение Android 2.2 запускаться с SurfaceView в качестве базового вида с кнопкой, расположенной над ним, расположенной в нижней части экрана.Пока что не повезло.Вылетает каждый раз при попытке запуска.Я проверил, чтобы убедиться, что действие зарегистрировано в манифесте.

Вот мой код Java:

public class Dragable extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

, а вот мой main.xml:

<?xml version="1.0" encoding="utf-8"?>
<SurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/surface_home"
    >
    <Button
        android:id="@+id/add_new"
        android:text="@string/add_new"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
    />
</SurfaceView>

и мой манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Dragable"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="8" />

</manifest> 

и вот моя ошибка:

11-29 11:58:52.620: ERROR/AndroidRuntime(512): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.Dragable}: java.lang.ClassCastException: android.view.SurfaceView

Не могу найти ничего связанного с поиском по SO.Мои извинения, если об этом уже спрашивали.

Ответы [ 2 ]

4 голосов
/ 29 ноября 2010

Теперь я вижу проблему.SurfaceView не является контейнером, я имею в виду, что он не расширяется ViewGroup, поэтому вы не можете поместить Button внутрь SurfaceView.Что вы можете сделать, это обернуть SurfaceView и Button в RelativeLayout.

0 голосов
/ 29 ноября 2010

Вы не используете контейнер для размещения компонентов.Используйте это и внесите изменения

 <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SurfaceView 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/surface_home"
>
<Button
    android:id="@+id/add_new"
    android:text="@string/add_new"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
/>
 </SurfaceView>
</FrameLayout>
...