0

我的相机活动不起作用:

我从 listActivity 启动它。我还有来自列表活动的另外三个活动,但相机活动/意图force closes


相机.java

              package com.alpha.beta;

               import java.io.IOException;

               import android.app.Activity;
               import android.content.Intent;
               import android.graphics.Bitmap;
               import android.os.Bundle;
               import android.view.View;
               import android.widget.ImageButton;
               import android.widget.ImageView;

               public class Camera extends Activity implements View.OnClickListener {

ImageView Image;
ImageView setWall;
ImageButton TakePic;
Bitmap bmap;
Intent i;
final static int cameraData = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.camera);
    vars();

}

private void vars() {
    // TODO Auto-generated method stub
    Image = (ImageView) findViewById(R.id.ivReturnPic);
    setWall = (ImageView) findViewById(R.id.bSetWallpaper);
    TakePic = (ImageButton) findViewById(R.id.iBTakePic);
    setWall.setOnClickListener(this);
    TakePic.setOnClickListener(this);
}

public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.iBTakePic:
        try {
            getApplicationContext().setWallpaper(bmap);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        break;
    case R.id.bSetWallpaper:
        i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(i, cameraData);
        break;

    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        bmap = (Bitmap) extras.get("data");
        Image.setImageBitmap(bmap);
    }
}

     }

日志猫

       12-02 20:44:11.229: W/dalvikvm(6322): threadid=1: thread exiting with uncaught exception (group=0x40018578)
       12-02 20:44:11.229: E/AndroidRuntime(6322): FATAL EXCEPTION: main
       12-02 20:44:11.229: E/AndroidRuntime(6322): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alpha.beta/com.alpha.beta.Camera}: java.lang.ClassCastException: android.widget.Button
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at android.os.Handler.dispatchMessage(Handler.java:99)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at android.os.Looper.loop(Looper.java:130)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at android.app.ActivityThread.main(ActivityThread.java:3687)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at java.lang.reflect.Method.invokeNative(Native Method)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at java.lang.reflect.Method.invoke(Method.java:507)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at dalvik.system.NativeStart.main(Native Method)
       12-02 20:44:11.229: E/AndroidRuntime(6322): Caused by: java.lang.ClassCastException: android.widget.Button
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at com.alpha.beta.Camera.vars(Camera.java:34)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at com.alpha.beta.Camera.onCreate(Camera.java:27)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
       12-02 20:44:11.229: E/AndroidRuntime(6322):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)

12-02 20:44:11.229: E/AndroidRuntime(6322): ... 11 更多

清单文件

      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.alpha.beta"
android:versionCode="1"
android:versionName="1.0" >

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

<uses-permission android:name="android.permission.SET_WALLPAPER" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".Splash"
        android:label="@string/title_activity_app" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Menu"
        android:label="@string/title_activity_app" >
        <action android:name="com.alpha.beta.Menu" />

        <category android:name="android.intent.category.DEFAULT" />
    </activity>
    <activity
        android:name=".App"
        android:label="@string/title_activity_app" >
    </activity>
    <activity
        android:name=".TextPlay"
        android:label="@string/title_activity_app" >
    </activity>
    <activity
        android:name=".Email"
        android:label="@string/title_activity_app" >
    </activity>
    <activity
        android:name=".Camera"
        android:label="@string/title_activity_app" >
    </activity>
</application>

    </manifest>
4

1 回答 1

0

您没有显示您的布局文件,但存在(或其来源)。你做错的事情是这样的:你的布局元素是例如ImageView,但你做findViewById()了并将结果转换为 ie ImageButton。这会导致强制转换异常。所以检查你所有的布局元素和你的代码,看看是否没有所说的不匹配。

除非您不需要特定视图的任何特殊功能,而是只想将侦听器附加到它,或更改其可见性等,否则您应该只将结果findViewById()转换View为不需要关心这是否是正确的转换(所有 UI 元素都是 View 的子元素)。

于 2012-12-02T15:28:18.907 回答