2013-09-11 6 views
0

Я очень новичок в программировании, и мне жаль, что этот вопрос задан уже много раз. Я действительно очень новичок в этом, и чтение кода по-прежнему довольно запутанно для меня.java.lang.RuntimeException: Не удалось запустить активность ComponentInfo java.lang.nullpointerexception код новичка

Так что я слежу за некоторыми учебниками онлайн, и мне удалось создать это простое приложение, которое добавляет или вычитает 1 в зависимости от нажатой кнопки.

Недавно я понял, как добавить заставку и узнать, как работают действия и намерения.

Итак, я попытался добавить всплеск перед запуском приложения, но я получаю сообщение об ошибке, которое приводит к сбою приложения после окончания всплеска. Мне было интересно, можете ли вы помочь новичкам. заранее спасибо. ура!

это ошибка из LogCat

09-11 14:02:29.312: D/dalvikvm(3078): GC_FOR_ALLOC freed 62K, 10% free 2676K/2948K, paused 29ms, 
total 31ms 
09-11 14:02:29.382: I/dalvikvm-heap(3078): Grow heap (frag case) to 12.189MB for 9830416-byte 
allocation 
09-11 14:02:29.422: D/dalvikvm(3078): GC_FOR_ALLOC freed 2K, 3% free 12274K/12552K, paused 44ms, 
total 44ms 
09-11 14:02:30.202: D/dalvikvm(3078): GC_FOR_ALLOC freed <1K, 3% free 12274K/12552K, paused 
26ms, total 26ms 
09-11 14:02:30.313: I/dalvikvm-heap(3078): Grow heap (frag case) to 28.857MB for 17479696-byte 
allocation 
09-11 14:02:30.432: D/dalvikvm(3078): GC_FOR_ALLOC freed <1K, 1% free 29343K/29624K, paused 
117ms, total 117ms 
09-11 14:02:31.052: D/gralloc_goldfish(3078): Emulator without GPU emulation detected. 
09-11 14:02:34.112: D/AndroidRuntime(3078): Shutting down VM 
09-11 14:02:34.124: W/dalvikvm(3078): threadid=1: thread exiting with uncaught exception 
(group=0x41465700) 
09-11 14:02:34.152: E/AndroidRuntime(3078): FATAL EXCEPTION: main 
09-11 14:02:34.152: E/AndroidRuntime(3078): java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.testapp.numbercounter/com.testapp.numbercounter.Main}: 
java.lang.NullPointerException 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
android.app.ActivityThread.access$600(ActivityThread.java:141) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
android.os.Handler.dispatchMessage(Handler.java:99) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at android.os.Looper.loop(Looper.java:137) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
android.app.ActivityThread.main(ActivityThread.java:5103) 
09-11 14:02:34.152: E/AndroidRuntime(3078):at 
java.lang.reflect.Method.invokeNative(NativeMethod) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
java.lang.reflect.Method.invoke(Method.java:525) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at  
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at dalvik.system.NativeStart.main(Native Method) 
09-11 14:02:34.152: E/AndroidRuntime(3078): Caused by: java.lang.NullPointerException 
09-11 14:02:34.152: E/AndroidRuntime(3078): at android.graphics.PorterDuffColorFilter.<init> 
(PorterDuffColorFilter.java:28) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
android.graphics.drawable.Drawable.setColorFilter(Drawable.java:424) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
com.testapp.numbercounter.Main.onCreate(Main.java:26) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at 
android.app.Activity.performCreate(Activity.java:5133) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at  
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
09-11 14:02:34.152: E/AndroidRuntime(3078): at  
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
09-11 14:02:34.152: E/AndroidRuntime(3078): ... 11 more 
09-11 14:02:38.182: I/Process(3078): Sending signal. PID: 3078 SIG: 9 

Вот код на Main.class

import android.R.color; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class Main extends Activity { 

TextView number; 
Button add, sub, res; 
int counter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    counter = 0; 
    number = (TextView) findViewById(R.id.numberTxt); 
    add = (Button) findViewById(R.id.addBtn); 
    sub = (Button) findViewById(R.id.subBtn); 
    res = (Button) findViewById(R.id.resBtn); 
    add.getBackground().setColorFilter(color.white, null); 
    sub.getBackground().setColorFilter(color.white, null); 
    res.getBackground().setColorFilter(color.white, null); 

    add.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter++; 
      number.setText(Integer.toString(counter)); 

     } 
    }); 

    sub.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter--; 
      number.setText(Integer.toString(counter)); 

     } 
    }); 

    res.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter = 0; 
      number.setText(Integer.toString(counter)); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

и вот код на SplashActivity.class

package com.testapp.numbercounter; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

public class SplashActivity extends Activity { 

@Override 
protected void onCreate(Bundle SplashBndl) { 
    // TODO Auto-generated method stub 
    super.onCreate(SplashBndl); 
setContentView(R.layout.splashscreen); 
Thread timer = new Thread(){ 
    public void run(){ 
     try{ 
      sleep(3000); 
     } catch (InterruptedException e){ 
      e.printStackTrace(); 
     } 
     finally { 
      Intent StartPoint = new Intent(SplashActivity.this, Main.class); 
      SplashActivity.this.startActivity(StartPoint); 
     } 
    } 
}; 
timer.start(); 
} 
protected void onPause(){ 
    super.onPause(); 
    finish(); 
} 


} 

и, наконец, мой AndroidManifest.xml

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

<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="17" /> 

<application 
android:allowBackup="true" android:icon="@drawable/ic_launcher"   
android:label="@string/app_name" android:theme="@style/AppTheme" > 
    <activity 
     android:name=".SplashActivity" 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=".Main" android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="com.testapp.numbercounter.MAIN" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

надеюсь, что кто-то может помочь Я уже давно застрял в этой проблеме.

ответ

2
add.getBackground().setColorFilter(color.white, null); 

Вы не можете обеспечить null режим PorterDuff (второй аргументом) при установке цветового фильтра

Укажите режим porterduff и он должен работать до тех пор, как и все остальное в вашем коде функционален ..

add.getBackground().setColorFilter(Color.white, PorterDuff.Mode.SRC_ATOP); //pick whatever PorterDuff mode is appropriate for you here 

Я не уверен, что вы пытаетесь выполнить с помощью colorfilter. Если все, что вы хотите, чтобы указать цвет фона, вы можете просто использовать

add.setBackgroundColor(Color.white); 
+0

wow спасибо, что сделал трюк! – user2769831

0
<activity 
     android:name=".Main" android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="com.testapp.numbercounter.MAIN" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
</activity> 

удалить <intent-filter> из <activity> теге ..

0

Проблема не с активностью в манифесте. Это нулевая указатель в этой строке

add.getBackground().setColorFilter(color.white, null); 

проверить ответ, указанный dymmeh для получения дополнительной информации.

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