2013-03-16 77 views
0

你客串我有一個問題...意圖不工作

我有這樣的代碼在我Islem.java類

public void myFinish(){ 
    Intent i = new Intent(); 
    i.setClassName(this, SaveScore.class); 
    startActivity(i); 
} 

,如果我在onCreate方法寫myFinish();它工作正常

然而,在timer.java類

public void onFinish() { 
    Islem is = new Islem(); 
    is.myFinish(); 
} 

當我使用這款C頌歌錯誤! :)

奇怪的是,當我的myFinish代碼更改

public void myFinish(){ 

/*  Intent i = new Intent(); 
    i.setClassName(this, SaveScore.class); 
    startActivity(i);*/ 

    time.setText("Finish!"); 
} 

即使我在timer.jawa課堂上使用它,它工作得很好!

logcat的 03-16 14:27:14.370:E/AndroidRuntime(29940):致命異常:主 03-16 14:27:14.370:E/AndroidRuntime(29940):顯示java.lang.NullPointerException 03 -16 14:27:14.370:E/AndroidRuntime(29940):在android.app.Activity.startActivityForResult(Activity.java:2833) 03-16 14:27:14.370:E/AndroidRuntime(29940):在android。 app.Activity.startActivity(Activity.java:2959) 03-16 14:27:14.370:E/AndroidRuntime(29940):at com.edusoftgame.kidsmath.Islem.myFinish(Islem.java:323) 03-16 14:27:14.370:E/AndroidRuntime(29940):在com.edusoftgame.kidsmath.Timer.onFinish(Timer.java:19) 03-16 14:27:14.370:E/AndroidRuntime(29940):在android。 os.CountDownTimer $ 1.H andleMessage(CountDownTimer.java:118) 03-16 14:27:14.370:E/AndroidRuntime(29940):at android.os.Handler.dispatchMessage(Handler.java:99) 03-16 14:27:14.370: E/AndroidRuntime(29940):在android.os.Looper.loop(Looper.java:130) 03-16 14:27:14.370:E/AndroidRuntime(29940):在android.app.ActivityThread.main(ActivityThread。 java:3693) 03-16 14:27:14.370:E/AndroidRuntime(29940):at java.lang.reflect.Method.invokeNative(Native Method) 03-16 14:27:14.370:E/AndroidRuntime(29940 ):at java.lang.reflect.Method.invoke(Method.java:507) 03-16 14:27:14.370:E/AndroidRuntime(29940):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:907) 03-16 14:27:14.370:E/AndroidRuntime(29940):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 03-16 14:27:14.370:E/AndroidRuntime(29940):at dalvik.system.NativeStart.main(Native Method)

任何想法?謝謝...

+2

張貼您的logcat – Shoshi 2013-03-16 11:35:00

回答

1

@Murali。不要用CountDownTimer擴展你的類。僅限活動擴展。

如果你想使用CountDownTimer,然後用這樣的方式 -

CountDownTimer countDownTimer; 

在你的方法:

public void myfininsh(){ 

    countDownTimer = new CountDownTimer(longvalue,500) { 

@Override 
      public void onTick(long millisUntilFinished) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onFinish() { 
       // TODO Auto-generated method stub 

       System.out.println("Enabled"); 

      } 
     }.start(); 
} 
} 

這肯定會解決你的問題。

+0

謝謝:)生來贏 – makkuzu 2013-03-18 10:00:34

+0

@makkuzu歡迎:) – 2013-03-19 13:31:53

+0

@makkuzu Upvote我的答案,如果它幫助你。 – 2013-03-19 13:33:12

0

試試這個,而不是this use你的activity name

Intent i = new Intent(MainActivity.this, SaveScore.class); 
startActivity(i); 
+0

抱歉不工作! – makkuzu 2013-03-16 12:19:30

0

願你的類名引用沒有得到嘗試像,

Intent i = new Intent(); 
    i.setClassName(YourclassName.this, SaveScore.class); 
    startActivity(i); 
+0

不起作用! – makkuzu 2013-03-16 12:26:48

0

嘗試像這樣...

Intent i = new Intent(); 
i.setClassName(your package name, your class name); 
startActivity(i); 
+0

當我使用 Intent i = new Intent(); i.setClassName(getApplicationContext(),SaveScore.class); StartActivity(i); setClassName給出錯誤 – makkuzu 2013-03-16 12:23:02

+0

它給出了什麼錯誤? – 2013-03-16 12:27:38

+0

它強調setClassName紅色,但當我將它移到i.setClassName(「com.softgame.kidsmath」,「com.softgame.kidsmath.SaveScore」); 沒有錯誤,但仍然無法正常工作 – makkuzu 2013-03-16 12:37:31

0

有timer.java類沒有擴展活動或Serivce了嗎?

方法:

public void myFinish(){ 
Intent i = new Intent(); 
i.setClassName(this, SaveScore.class); 
startActivity(i); 

}

做工精細,因爲你在活動中的onCreate()中寫道。

+0

timer.java不擴展Activity擴展CountDownTimer 那麼,我該怎麼辦? – makkuzu 2013-03-16 12:33:15

1

嘗試使用此剪斷代碼:

public void myFinish(){ 
Intent i = new Intent(); 
i.setClassName(this, SaveScore.class); 
startActivity(i) 

;