2014-02-10 4 views
-1

Здравствуйте, я только начинаю работать в Android. Помогите пожалуйста, прочитайте все сообщения об этом, ничто не поможет. Пробовал все комбинации именования в манифесте. Это приложение показывает жизненный цикл приложения.Невозможно создать экземпляр активности Android

Вход

02-11 01:07:36.538: W/dalvikvm(20921): threadid=1: thread exiting with uncaught exception (group=0x40ab6228) 
02-11 01:07:36.558: E/AndroidRuntime(20921): FATAL EXCEPTION: main 
02-11 01:07:36.558: E/AndroidRuntime(20921): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.lab1/com.example.lab1.MainActivity}: java.lang.NullPointerException 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2240) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.app.ActivityThread.access$600(ActivityThread.java:139) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.os.Looper.loop(Looper.java:156) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.app.ActivityThread.main(ActivityThread.java:4977) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at java.lang.reflect.Method.invokeNative(Native Method) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at java.lang.reflect.Method.invoke(Method.java:511) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at dalvik.system.NativeStart.main(Native Method) 
02-11 01:07:36.558: E/AndroidRuntime(20921): Caused by: java.lang.NullPointerException 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.content.ContextWrapper.getResources(ContextWrapper.java:81) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.view.View.<init>(View.java:2723) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.view.View.<init>(View.java:2771) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.widget.TextView.<init>(TextView.java:504) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.widget.TextView.<init>(TextView.java:494) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.widget.TextView.<init>(TextView.java:489) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at com.example.lab1.MainActivity.<init>(MainActivity.java:30) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at java.lang.Class.newInstanceImpl(Native Method) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at java.lang.Class.newInstance(Class.java:1319) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.app.Instrumentation.newActivity(Instrumentation.java:1039) 
02-11 01:07:36.558: E/AndroidRuntime(20921): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112) 
02-11 01:07:36.558: E/AndroidRuntime(20921): ... 11 more 

Manifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.lab1" 
    android:versionCode="1" 
    android:versionName="1.0" > 

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

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

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="ActivityTwo" 
      android:label="@string/app_name" > 
     </activity> 

    </application> 

</manifest> 

MainActivity

package com.example.lab1; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    private static final String RESTART_KEY = "restart"; 
    private static final String RESUME_KEY = "resume"; 
    private static final String START_KEY = "start"; 
    private static final String CREATE_KEY = "create"; 

    // String for LogCat documentation 
    private final static String TAG = "Lab-ActivityOne"; 

    // Lifecycle counters 

    // TODO: 

    int mCreate=0; 
    int mResume=0; 
    int mRestart=0; 
    int mStart=0; 
    TextView textView1 = new TextView(this); 
    TextView textView2 = new TextView(this); 
    TextView textView3 = new TextView(this); 
    TextView textView4 = new TextView(this); 


    // TODO: Create variables for each of the TextViews, called 
     // mTvCreate, etc. 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_one); 

     // TODO: Assign the appropriate TextViews to the TextView variables 
     // Hint: Access the TextView by calling Activity's findViewById() 
     textView1 = (TextView) findViewById(R.id.create); 
     textView2 = (TextView) findViewById(R.id.start); 
     textView3 = (TextView) findViewById(R.id.resume); 
     textView4 = (TextView) findViewById(R.id.restart); 





     Button launchActivityTwoButton = new Button(this); 
     launchActivityTwoButton = (Button) findViewById(R.id.bLaunchActivityTwo); 
     launchActivityTwoButton.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View view) 
      { 
       // TODO: 
       // Launch Activity Two 
       // Hint: use Context's startActivity() method 

       // Create an intent stating which Activity you would like to start 


       // Launch the Activity using the intent 
       Intent myIntent=new Intent(view.getContext(),ActivityTwo.class); 
       startActivity(myIntent); 

      } 
     }); 






     // Check for previously saved state 
     if (savedInstanceState != null) { 

      mCreate=savedInstanceState.getInt(CREATE_KEY); 
      mResume=savedInstanceState.getInt(RESUME_KEY); 
      mRestart=savedInstanceState.getInt(RESTART_KEY); 
      mStart=savedInstanceState.getInt(START_KEY); 


     } 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnCreate"); 


     // TODO: 
     mCreate++; 
     //displayCounts(); 



    } 

    // Lifecycle callback overrides 

    @Override 
    public void onStart() { 
     super.onStart(); 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnStart"); 


     // TODO: 
     mStart++; 
     //displayCounts(); 


    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnResume"); 


     // TODO: 
     mResume++; 
     displayCounts(); 


    } 

    @Override 
    public void onPause() { 
     super.onPause(); 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnPause"); 

    } 

    @Override 
    public void onStop() { 
     super.onStop(); 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnStop"); 


    } 

    @Override 
    public void onRestart() { 
     super.onRestart(); 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnRestart"); 


     // TODO: 
     mRestart++; 
     displayCounts(); 



    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnDestroy"); 


    } 

    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     // TODO: 
     // Save state information with a collection of key-value pairs 
     // 4 lines of code, one for every count variable 
     savedInstanceState.putInt(RESTART_KEY,mRestart); 
     savedInstanceState.putInt(RESUME_KEY,mResume); 
     savedInstanceState.putInt(START_KEY,mStart); 
     savedInstanceState.putInt(CREATE_KEY,mCreate); 





    } 

    // Updates the displayed counters 
    public void displayCounts() { 

     textView1.setText("onCreate() calls: " + mCreate); 
     textView2.setText("onStart() calls: " + mStart); 
     textView3.setText("onResume() calls: " + mResume); 
     textView4.setText("onRestart() calls: " + mRestart); 

    } 
} 

ActivityTwo

package com.example.lab1; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class ActivityTwo extends Activity { 

    private static final String RESTART_KEY = "restart"; 
    private static final String RESUME_KEY = "resume"; 
    private static final String START_KEY = "start"; 
    private static final String CREATE_KEY = "create"; 

    // String for LogCat documentation 
    private final static String TAG = "Lab-ActivityTwo"; 

    // Lifecycle counters 

    // TODO: 
    int mCreate=0; 
    int mResume=0; 
    int mRestart=0; 
    int mStart=0; 
    TextView textView1 = new TextView(this); 
    TextView textView2 = new TextView(this); 
    TextView textView3 = new TextView(this); 
    TextView textView4 = new TextView(this); 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_two); 

     textView1 = (TextView) findViewById(R.id.create); 
     textView2 = (TextView) findViewById(R.id.start); 
     textView3 = (TextView) findViewById(R.id.resume); 
     textView4 = (TextView) findViewById(R.id.restart); 





     Button closeButton = new Button(this); 
      closeButton=  (Button) findViewById(R.id.bClose); 
     closeButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       finish(); 



      } 
     }); 

     // Check for previously saved state 
     if (savedInstanceState != null) { 

      // TODO: 
      // Restore value of counters from saved state 
      // Only need 4 lines of code, one for every count variable 
      mCreate=savedInstanceState.getInt(CREATE_KEY); 
      mResume=savedInstanceState.getInt(RESUME_KEY); 
      mRestart=savedInstanceState.getInt(RESTART_KEY); 
      mStart=savedInstanceState.getInt(START_KEY); 


     } 

     // TODO: Emit LogCat message 
     // TODO: Emit LogCat message 
     Log.i(TAG,"OnCreate"); 


     // TODO: 
     mCreate++; 
     displayCounts(); 


     // TODO: 
     // Update the appropriate count variable 
     // Update the user interface via the displayCounts() method 




    } 

    // Lifecycle callback methods overrides 

    @Override 
    public void onStart() { 
     super.onStart(); 

     // TODO: Emit LogCat message 


     // TODO: 
     // Update the appropriate count variable 
     // Update the user interface 
     // TODO: Emit LogCat message 
     Log.i(TAG,"OnStart"); 


     // TODO: 
     mStart++; 
     displayCounts(); 


    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

     // TODO: Emit LogCat message 


     // TODO: 
     // Update the appropriate count variable 
     // Update the user interface 
     Log.i(TAG,"OnResume"); 


     // TODO: 
     mResume++; 
     displayCounts(); 




    } 

    @Override 
    public void onPause() { 
     super.onPause(); 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnPause"); 


    } 

    @Override 
    public void onStop() { 
     super.onStop(); 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnStop"); 


    } 

    @Override 
    public void onRestart() { 
     super.onRestart(); 

     // TODO: Emit LogCat message 
     Log.i(TAG,"OnRestart"); 


     // TODO: 
     mRestart++; 
     displayCounts(); 




    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 

     Log.i(TAG,"OnDestroy"); 

    } 

    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 

     // TODO: 
     savedInstanceState.putInt(RESTART_KEY,mRestart); 
     savedInstanceState.putInt(RESUME_KEY,mResume); 
     savedInstanceState.putInt(START_KEY,mStart); 
     savedInstanceState.putInt(CREATE_KEY,mCreate); 







    } 

    // Updates the displayed counters 
    public void displayCounts() { 

     textView1.setText("onCreate() calls: " + mCreate); 
     textView2.setText("onStart() calls: " + mStart); 
     textView3.setText("onResume() calls: " + mResume); 
     textView4.setText("onRestart() calls: " + mRestart); 

    } 
} 
+0

Это не вопрос. Пожалуйста, объясните, что вы пытаетесь сделать и что вы пробовали. – apesa

+0

Извините, я нашел проблему. Неверный TextView intialize. – svdanik

ответ

1

Я немного новичок в этом, поэтому я мог бы говорить мусор ....

Я бы избавился от инициализации члена в textView1 -> textView4 и переместил его до тех пор, пока не будет установлен setContentView. Затем я поставил точку останова на super.OnCreate и посмотрю, попадет ли она туда. Если вы делаете по одному шагу каждую строку, пока не увидите нулевой указатель.

+0

Thx, должен быть TextView textView1 = null; – svdanik

+0

Я * думаю * проблема в том, что основной вид не настроен до тех пор, пока XML не будет завышен с помощью setContentView. – Rob

+0

И как исправить это & ​​ – svdanik

Смежные вопросы