【问题标题】:Intent doesn't work意图不起作用
【发布时间】:2013-03-16 11:28:25
【问题描述】:

你猜我有问题...

我的 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();
}

当我使用这个代码时出现错误! :)

奇怪的是当我把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.handleMessage(CountDownTimer.java:118) 03-16 14:27:14.370: E/AndroidRuntime(29940): 在 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): 在 java.lang.reflect.Method.invokeNative(Native Method) 03-16 14:27:14.370: E/AndroidRuntime(29940): 在 java.lang.reflect.Method.invoke(Method.java:507) 03-16 14:27:14.370: E/AndroidRuntime(29940): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 03-16 14:27:14.370: E/AndroidRuntime(29940): 在 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)

有什么想法吗?谢谢...

【问题讨论】:

    标签: android android-intent countdowntimer


    【解决方案1】:

    @穆拉利。不要使用 CountDownTimer 扩展您的课程。仅使用 Activity 扩展。

    如果你想使用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();
    }
    }
    

    这肯定会解决你的问题。

    【讨论】:

      【解决方案2】:

      尝试使用此片段代码:

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

      ;

      【讨论】:

        【解决方案3】:

        试试这个,而不是this use 你的activity name

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

        【讨论】:

          【解决方案4】:

          愿你的类名参考没有得到尝试,

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

          【讨论】:

            【解决方案5】:

            还有没有扩展 Activity 或 Serivce 的 timer.java 类吗?

            方法:

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

            }

            工作正常,因为您在 Activity 的 onCreate() 中编写了代码。

            【讨论】:

            • timer.java 不扩展 Activity 它扩展了 CountDownTimer 那么,我该怎么办?
            【解决方案6】:

            试试这样...

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

            【讨论】:

            • 当我使用那个 Intent i = new Intent(); i.setClassName(getApplicationContext(),SaveScore.class);开始活动(一); setClassName 给出错误
            • 它用红色强调了 setClassName,但是当我将它转移到 i.setClassName("com.softgame.kidsmath", "com.softgame.kidsmath.SaveScore");没有错误,但仍然不起作用
            • 尝试在 setClassName() 中进行更改 - 1. 仅提供您的包名 2. 作为第二个参数提供完整的类名(带包)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-09-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多