【发布时间】:2017-11-05 15:25:12
【问题描述】:
我的问题很简单,我认为很简单:) 我无法从 Retrofit 中的 CallBack 方法启动新的 Activity,我遇到了类似
的问题" android.util.AndroidRuntimeException:从 Activity 上下文外部调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是您想要的吗?"
sign_in_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String userEmail = email.getText().toString();
String userPassword = password.getText().toString();
final LoginService loginService = RetrofitClient.createService(LoginService.class, userEmail, userPassword);
loginService.basicLogin(new Callback<User>() {
@Override
public void success(User user, Response response) {
Toast.makeText(getApplicationContext(),"You are Logged", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(), BetweenActivity.class);
startActivity(intent);
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(getApplicationContext(),"Something went wrong", Toast.LENGTH_SHORT).show();
}
});
这是我的日志:
致命异常:主要 进程:com.example.bunzlau.retrofit,PID:18138 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.bunzlau.retrofit/com.example.bunzlau.retrofit.BetweenActivity}:java.lang.NullPointerException:尝试调用虚拟方法 'android.view.View android.空对象引用上的 widget.Button.findViewById(int)' 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 在 android.app.ActivityThread.access$1100(ActivityThread.java:221) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:158) 在 android.app.ActivityThread.main(ActivityThread.java:7225) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.view.View android.widget.Button.findViewById(int)' 在 com.example.bunzlau.retrofit.BetweenActivity.onCreate(BetweenActivity.java:18) 在 android.app.Activity.performCreate(Activity.java:6876) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 在 android.app.ActivityThread.access$1100(ActivityThread.java:221) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:158) 在 android.app.ActivityThread.main(ActivityThread.java:7225) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
【问题讨论】:
-
您的 BetweenActivity.onCreate() 似乎正在引发异常,因此您的问题可能与从 Retrofit 启动活动没有直接关系。在 BetweenActivity.onCreate() 中查找 findViewById()。
标签: java android callback retrofit