gpt4 book ai didi

android - 我在尝试通过 onFinish() 传递 Intent 时遇到 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 20:51:27 24 4
gpt4 key购买 nike

我想做的是使用 CountDownTimer 类中的 onFinish() 方法通过 Intent 传递值。 Intent 的流动是这样的。我的 MyCountDownTimer 类包含将传递 Intent/值的方法。看起来像这样。我评论了 NullPointerException 出现的位置。这是我的重试 Activity 的 fragment 。

 /*
* Retry Activity
*/

@Override
public void onClick(View v) {
if (v.getId()== R.id.retry){

Bundle extras1 = getIntent().getExtras();
whichTest = extras1.getInt("whichTest"); //NullPointerException


if (whichTest == 1){
Intent intent1 = new Intent(Retry.this, Test1.class);
startActivity(intent1);
}

if (whichTest == 2){
Intent intent1 = new Intent(Retry.this, Test2.class);
startActivity(intent1);
}

这是使用该方法的 Activity 。它叫做 Test1

/*
* Test1 Activity
*/

//Timer

textCounter = ((TextView)findViewById(R.id.textCounter));


myCountDownTimer = new MyCountDownTimer(textCounter, 5000, 1000);
myCountDownTimer.start();
textCounter.setText("");
myCountDownTimer.onTick(5000);


}

@Override
public void onClick(View v) {



if (textCounter==null){

myCountDownTimer.onFinish();

}

此 fragment 来自 MyCountDownTimer 类

/*
* MyCountDownTimer
*/
@Override
public void onFinish() {


Intent retryIntent = new Intent(textCounter.getContext(), Retry.class);

if (textCounter.getContext().equals(Test1.class)){
whichTest = 1;
retryIntent.putExtra("whichTest",whichTest);
}
if (textCounter.getContext().equals(Test2.class)){
whichTest = 2;
retryIntent.putExtra("whichTest",whichTest);
}
textCounter.getContext().startActivity(retryIntent);



}

如果您想查看更完整的版本,请转到此处 https://gist.github.com/asonofman

这是日志

03-16 12:32:39.379    4625-4625/com.dose.apps.brainnoodles E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.dose.apps.brainnoodles.Retry.onClick(Retry.java:40)
at android.view.View.performClick(View.java:4475)
at android.view.View$PerformClick.run(View.java:18796)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5455)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
at dalvik.system.NativeStart.main(Native Method)

最佳答案

很可能是这样的:

textCounter.getContext().equals(Test1.class)

将始终返回 false。您正在寻找的任何机会:

textCounter.getContext() instanceof Test1

在此之后,您的 Intent 中将不会添加任何额外内容,因此:

Bundle extras1 = getIntent().getExtras();

extras1 将为 null

关于android - 我在尝试通过 onFinish() 传递 Intent 时遇到 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29081674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com