2013-10-10 2 views
1

Я только начинаю программировать приложения для Android, и я кодирую вместе с книгой, которую я получил. Приложение просто должно запустить группу активистов тестирования из активности списка. Я проверяю активность списка, и он работает нормально. Я также попытался проверить первое действие в списке активности, и он просто застревает, пытаясь загрузить его, и просто будет пытаться загрузить его. Мой код практически дословно из книги, кроме имени пакета. Я знаю, что он находит класс, это просто действие не запускается, и я не знаю почему. Я чувствую, что просто пропущу что-то простое или не замечаю небольшой ошибки. Вот три файла, которые у меня есть для приложения. Я почти уверен, что это связано с намерением в AndroidBasicStarter.java, но я включаю все на всякий случай, если это не так.Невозможно запустить новую активность из ListActivity с использованием Intent

Редактировать: У меня возникли проблемы с загрузкой LifeCycleTest.java. Я больше не тестировал тесты, потому что первый из них не работает, и я не знаю, почему.

AndroidBasicStarter.java

package com.dom.starter; 

import android.os.Bundle; 
import android.content.Intent; 
import android.app.ListActivity; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 


public class AndroidBasicStarter extends ListActivity 
{ 
    String tests[] = { "LifeCycleTest", "SingleTouchTest", "MultiTouchTest", 
    "KeyTest", "AccelerometerTest", "AssestsTest", "ExternalStorageTest", 
    "SoundPoolTest", "MediaPlayerTest", "FullScreenTest", "RenderViewTest", 
    "ShapeTest", "BitmapTest", "FontTest", "SurfaceTest"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String> 
       (this,android.R.layout.simple_list_item_1,tests)); 

    } 

    @Override 
    protected void onListItemClick(ListView list, View view, 
     int position,long id) 
    { 
     super.onListItemClick(list, view, position, id); 
     String testName = tests[position]; 

     try 
     { 
      Class clazz = Class.forName("com.dom.starter." + testName); 
      Intent intent = new Intent(AndroidBasicStarter.this,clazz); 
      startActivity(intent);//problem here maybe? 
     }//end try 

     catch(ClassNotFoundException e) 
     { 
      e.printStackTrace(); 
     }//end catch 
    } 

} 

LifeCycleTest.java

package com.dom.starter; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 

public class LifeCycleTest extends Activity 
{ 
    StringBuilder builder = new StringBuilder(); 
    TextView textView; 

    private void log(String text) 
    { 
     Log.d("LifeCycleTest", text); 
     builder.append(text); 
     builder.append('\n'); 
     textView.setText(builder.toString()); 
    } 


    @Override 
    public void onCreate(Bundle saveInstanceState) 
    { 
     super.onSaveInstanceState(saveInstanceState); 
    textView = new TextView(this); 
    textView.setText(builder.toString()); 
    setContentView(textView); 
    log("Created"); 
    } 


    @Override 
    protected void onResume() 
    { 
     super.onResume(); 
     log("Resumed"); 
    } 


    @Override 
    protected void onPause() 
    { 
     super.onPause(); 
     log("Paused"); 

     if(isFinishing()) 
      log("Finishing"); 
    } 
} 

AndroidManifest.xml

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

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 
<uses-permission android:name="android.permission.WAKE_LOCK"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name="AndroidBasicStarter" 
     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="LifeCycleTest" 
     android:label="Life Cycle Test" 
     android:configChanges="keyboard|keyboardHidden|orientation"/> 
</application> 

Logcat

10-10 12:50:39.807: E/AndroidRuntime(31182): FATAL EXCEPTION: main 
10-10 12:50:39.807: E/AndroidRuntime(31182): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dom.starter/com.dom.starter.LifeCycleTest}: java.lang.NullPointerException 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.app.ActivityThread.access$700(ActivityThread.java:143) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.os.Looper.loop(Looper.java:137) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.app.ActivityThread.main(ActivityThread.java:4950) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at java.lang.reflect.Method.invokeNative(Native Method) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at java.lang.reflect.Method.invoke(Method.java:511) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at dalvik.system.NativeStart.main(Native Method) 
10-10 12:50:39.807: E/AndroidRuntime(31182): Caused by: java.lang.NullPointerException 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.app.Activity.onSaveInstanceState(Activity.java:1222) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at com.dom.starter.LifeCycleTest.onCreate(LifeCycleTest.java:26) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.app.Activity.performCreate(Activity.java:5179) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
10-10 12:50:39.807: E/AndroidRuntime(31182): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) 
10-10 12:50:39.807: E/AndroidRuntime(31182): ... 11 more 

Заранее спасибо.

+0

'журнала ("Создано");' это проявляется в LogCat? – Shubhank

+0

Предполагается, что на экране появится экран, и он не появится на логарифме. Когда я пытаюсь его отладить, иногда возникает исключение NullPointerException, но это только иногда. – Dom

+0

, если вы используете LifeCycleTest.class вместо clazz, называется ли это? – Shubhank

ответ

2

в OnCreate в LifeCycleTest.java должно быть super.onCreate(saveInstanceState); вместо super.onSaveInstanceState(saveInstanceState);

+0

Спасибо. Я не могу поверить, что все было так просто. Глупый я. – Dom

0

В соответствии с вашим кодом LifeCycleTest будет работать, вам нужно добавить весь класс в ваш манифест.
изменение setContentView (textView); setContentView(R.layout.life_cycle_test);

+0

Извините, если я не был достаточно ясен, это проблема с загрузкой. Я не хочу продолжать, пока не будет исправлено. – Dom

+0

проверить обновленный ответ, у вас проблема с вашим 'setContentView' – VenomVendor

+0

Это просто дает мне ошибку. «life_cycle_test не может быть разрешен или не является полем» – Dom

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