получение исключения: невозможно создать экземпляр действия ComponentInfo - PullRequest
0 голосов
/ 07 августа 2011

я получаю следующее исключение: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cs.workshop.solvedroid/cs.workshop.solvedroid.SolveCaptureActivity}: java.lang.NullPointerException

когда я запускаю приложение, добираюсь до MainMenuActivity и пытаюсь открыть SolveCaptureAvctivity, я получаю исключение.

У меня есть другие вопросы об этом исключении, но все они указывают на AndroidManifest.xml, и мне кажется, это нормально.что это может быть?помогите пожалуйста

</p>

<pre><code>public class SolveCaptureActivity extends Activity {

Кнопка 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);                             
                    }
                }
            }
        }
    });


}

}

</p>

<pre><code>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-0718: 33: 26.784: INFO / ActivityManager (70): Запуск: Intent {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, пауза 51мс 08-07 18: 33: 28.434: INFO / ActivityManager (70): отображается cs.workshop.solvedroid / .AboutActivity: + 1s68ms 08-07 18:33:29.104: WARN / KeyCharacterMap (330): нет клавиатуры для идентификатора 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.solvedroid / .SolveCaptureActivity} из pid 330 08-07 18: 33: 30.834: DEBUG / AndroidRuntime (330):Завершение работы VM 08-07 18: 33: 30.834: WARN / dalvikvm (330): threadid = 1: поток завершается с необработанным исключением (группа = 0x40015560) 08-07 18: 33: 30.874: ERROR / AndroidRuntime (330): FATALИСКЛЮЧЕНИЕ: основное 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): java.lang.RuntimeException: Невозможно создать экземпляр действия ComponentInfo {cs.workshop.solvedroid / cs.workshop.solvedroid.SolveCaptureActivity}: java.lang.NullPointerException 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1544) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): в Android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1638) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): в android.app.ActivityThread.access $ 1500 (ActivityThread.java:117) 08-07 18:33: 30.874: ОШИБКА / AndroidRuntime (330): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:928) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): на android.os.Handler.dispatchMessage (Handler.java:99)08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): на android.os.Looper.loop (Looper.java:123) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): на Android.app.ActivityThread.main (ActivityThread.java:3647) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): на java.lang.reflect.Method.invokeNative (собственный метод) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): в java.lang.reflect.Method.invoke (Method.java:507) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 08-0718: 33: 30.874: ОШИБКА / AndroidRuntime (330): at dalvik.system.NativeStart.main (собственный метод) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): причина: java.lang.NullPointerException 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): на android.app.Activity.findViewById (Activity.java:1647) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): на cs.workshop.solvedroid.SolveCaptureActivity. (SolveCaptureActivity.java:15) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): в java.lang.Class.newInstanceImpl (собственный метод) 08-07 18: 33: 30.874: ОШИБКА /AndroidRuntime (330): в java.lang.Class.newInstance (Class.java:1409) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): в android.app.Instrumentation.newActivity (Instrumentation.java:1021)) 08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1536)08-07 18: 33: 30.874: ОШИБКА / AndroidRuntime (330): ... еще 11

</p>

<pre><code>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 голосов
/ 07 августа 2011

Вы не можете использовать findViewById(), пока не будет вызван setContentView().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...