首页 文章

获得异常:无法实例化活动ComponentInfo

提问于
浏览
-1

我收到以下异常: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cs.workshop.solvedroid/cs.workshop.solvedroid.SolveCaptureActivity}: java.lang.NullPointerException

当我运行应用程序时,转到MainMenuActivity并尝试打开SolveCaptureAvctivity我得到异常 .

我有关于这个例外的其他Q,但它们都指向AndroidManifest.xml,对我来说似乎很好 . 它能成为什么?请帮忙

public class SolveCaptureActivity extends Activity {
 

 Button bCamera;
    ImageView captured_image = ( ImageView ) findViewById( R.id.image_capture_photo); 

 private static final int PICTURE_REQUEST = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.solve_capture);
    Log.e("mydebug", "ERROR ERROR ERROR");
    /*
    // "Back" button 
    Button bBack = (Button) findViewById(R.id.button_back);
    bBack.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent gotoBack = new Intent();
            setResult(RESULT_OK, gotoBack);
            finish();
        }
    });
    */

    // "Camera" button
    bCamera = (Button) findViewById(R.id.button_camera);
    bCamera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent camera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);   
            startActivityForResult(camera, PICTURE_REQUEST);
            int caemraRequestCode = 0, CameraResultCode = -1;
            Intent data = new Intent();
            try{
            onActivityResult(caemraRequestCode, CameraResultCode, data);
            }
            catch(Exception e){
                Log.e("mydebug", "ERROR ERROR ERROR");
            }


        }

        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            Log.d("mylog", "here1");
            Log.d("mylog", Integer.toString(requestCode));
            Log.d("mylog", Integer.toString(resultCode));
            if (requestCode == PICTURE_REQUEST) {
                Log.d("mylog", "here2");
                if (resultCode == Activity.RESULT_OK){
                    // Display image received on the view;
                    Log.d("mylog", "here3");
                    Log.d("mylog", "here4");
                    Bitmap photo = (Bitmap) data.getExtras().get("data");                   
                    if (photo != null) { // Display your image in an ImageView in your layout (if you want to test it)
                        Log.d("mylog", "here5");
                        ImageView pictureHolder = (ImageView) findViewById(R.id.image_capture_photo);
                        pictureHolder.setImageBitmap(photo);                             
                    }
                }
            }
        }
    });


}
 

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


    // "Solve Capture" button
    Button bSlvCapture = (Button) findViewById(R.id.button_mainmenu_solvecapture);
    bSlvCapture.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent gotoSolveCapture = new Intent(v.getContext(), SolveCaptureActivity.class);
            startActivityForResult(gotoSolveCapture, 0);
        }
    });

    // "Solve Manual" button
    Button bSlvManual = (Button) findViewById(R.id.button_mainmenu_solvemanual);
    bSlvManual.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent gotoSolveManual = new Intent(v.getContext(), SolveManualActivity.class);
            startActivityForResult(gotoSolveManual, 0);
        }
    });

    // "About" button
    Button bAbout = (Button) findViewById(R.id.button_mainmenu_about);
    bAbout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent gotoAbout = new Intent(v.getContext(), AboutActivity.class);
            startActivityForResult(gotoAbout, 0);
        }
    });    
 

 }
}

08-07 18:33:23.854:INFO / ActivityManager(70):显示cs.workshop.solvedroid / .MainMenuActivity:4s385ms 08-07 18:33:26.784:INFO / ActivityManager(70):开始:意图{cmp = cs .workshop.solvedroid / .AboutActivity}来自pid 330 08-07 18:33:26.984:DEBUG / dalvikvm(330):GC_EXTERNAL_ALLOC释放11K,53%免费2582K / 5379K,外部7607K / 9499K,暂停51ms 08-07 18: 33:28.434:INFO / ActivityManager(70):显示cs.workshop.solvedroid / .AboutActivity:1s68ms 08-07 18:33:29.104:WARN / KeyCharacterMap(330):id 0 08-07 18:33没有键盘: 29.104:WARN / KeyCharacterMap(330):使用默认键映射:/system/usr/keychars/qwerty.kcm.bin 08-07 18:33:30.674:INFO / ActivityManager(70):开始:Intent {cmp = cs.workshop .psolved / .SolveCaptureActivity}来自pid 330 08-07 18:33:30.834:DEBUG / AndroidRuntime(330):关闭VM 08-07 18:33:30.834:WARN / dalvikvm(330):threadid = 1:线程退出with uncaught exception(group = 0x40015560)08-07 18:33:30.874:ERROR / AndroidRuntime(330):FATAL EXCEPTION:ma在08-07 18:33:30.874:ERROR / AndroidRuntime(330):java.lang.RuntimeException:无法实例化活动ComponentInfo {cs.workshop.solvedroid / cs.workshop.solvedroid.SolveCaptureActivity}:java.lang.NullPointerException 08 -07 18:33:30.874:ERROR / AndroidRuntime(330):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at android.app .ActivityThread.handleLaunchActivity(ActivityThread.java:1638)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at android.app.ActivityThread.access $ 1500(ActivityThread.java:117)08-07 18:33: 30.874:ERROR / AndroidRuntime(330):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:928)08-07 18:33:30.874:ERROR / AndroidRuntime(330):在android.os.Handler.dispatchMessage (Handler.java:99)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at android.os.Looper.loop(Looper.java:123)08-07 18:33:30.874:ERROR / AndroidRuntime (330):在android.app.ActivityThread.main(ActivityThread.java:36 47)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at java.lang.reflect.Method.invokeNative(Native Method)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at java .lang.reflect.Method.invoke(Method.java:507)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java: 839)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)08-07 18:33:30.874:ERROR / AndroidRuntime( 330):at dalvik.system.NativeStart.main(Native Method)08-07 18:33:30.874:ERROR / AndroidRuntime(330):引起:java.lang.NullPointerException 08-07 18:33:30.874:ERROR / AndroidRuntime(330):在android.app.Activity.findViewById(Activity.java:1647)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at cs.workshop.solvedroid.SolveCaptureActivity . (SolveCaptureActivity.java: 15)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at java.lang.Class.newInstanceImpl(Native Method)08-07 18:33:30.874:ERROR / AndroidRuntime(3) 30):at java.lang.Class.newInstance(Class.java:1409)08-07 18:33:30.874:ERROR / AndroidRuntime(330):at android.app.Instrumentation.newActivity(Instrumentation.java:1021)08 -07 18:33:30.874:ERROR / AndroidRuntime(330):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536)08-07 18:33:30.874:ERROR / AndroidRuntime(330):... 11更多

manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cs.workshop.solvedroid"
      android:versionCode="1"
      android:versionName="1.0">
    uses-sdk android:minSdkVersion="9" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:label="@string/app_name" android:name=".MainMenuActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:label="@string/app_name" android:name="AboutActivity"></activity>
        <activity android:label="@string/app_name" android:name="SolveCaptureActivity"></activity>
        <activity android:label="@string/app_name" android:name="SolveManualActivity"></activity>
        <activity android:label="@string/app_name" android:name="ManualSolutionActivity"></activity>

    </application>
manifest>

1 回答

  • 4

    在调用 setContentView() 之后才能使用 findViewById() .

相关问题