gpt4 book ai didi

android - 我如何从这个错误处理类在 Android 中启动一个新的 Activity?

转载 作者:行者123 更新时间:2023-11-30 01:31:48 25 4
gpt4 key购买 nike

我对此研究得越多,就越困惑。我承认我对这个 Android 东西很陌生。也许有人可以根据我的具体问题向我解释这一点。

在 Android 应用程序中,我有一个主 Activity 。这是上述 Activity 的相关代码。

installation.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
Log.v("PRBTEST","Successful save of installation");
} else {
Log.v("PRBTEST","Unsuccesfull save of installation: " + e.getMessage());

ParseErrorHandler.handleParseError(e);
}
}

此代码接近 onCreate() 函数的末尾,旨在捕获我们的后端服务器 Parse.com 的问题,在该问题中 session token 变得无效。错误处理程序应该检查错误,并根据错误类型采取一些措施。目前我们只有一个上下文,即 session token 错误。作为响应,它会给您一个弹出窗口,告诉您再次登录,然后将您送回可以登录的启动屏幕。

这是错误处理程序类。

public class ParseErrorHandler {

public static void handleParseError(ParseException e) {
switch(e.getMessage()) {
case "invalid session token": handleInvalidSessionToken();
break;
}
}

private static void handleInvalidSessionToken() {
AlertDialog.Builder alert = new AlertDialog.Builder(//...);

alert.setMessage("Oops! Your session is no longer valid. Please sign in again.")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
revertToSignIn();
}
});
alert.create().show();
}

private static void revertToSignIn() {
ParseUser.logOut();

Global.loggedIn = false;
Global.user = ParseUser.getCurrentUser();

Intent intent = new Intent(//..., ActivityStartup.class);
startActivity(intent); //<<this line can't be resolved at the moment
finish(); //<<this line can't be resolved at the moment
}

}这里有几个问题。我知道我必须将某种上下文传递给 ParseErrorHandler 中的方法,以便它们可以在当前替换为//... 的参数中使用。问题是我一辈子都不明白这些上下文是什么以及它们是如何工作的,而且每个在线解释都变得越来越抽象。我认为上下文本质上只是从中调用 Intent 或 AlertDialog 的 Activity ,但这一定是不正确的。

另一个问题是 revertToSignIn() 中激活 Intent 的最后几行无法从 ParseErrorHandler 中解决。这些看起来应该是比较基本的问题,但是有人可以清楚地向我解释一下吗?

最佳答案

I don't understand for the life of me what these contexts are and how they work and every online explanation gets progressively more abstract.

这里是我得到的关于 Contexts 的漂亮信息,会对你有所帮助。

What is 'Context' on Android?

http://developer.android.com/reference/android/content/Context.html

对于你的问题,首先在主要 Activity 中创建上下文然后做

    private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_category);
context = this;
.
.
.
.
.
installation.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
Log.v("PRBTEST","Successful save of installation");
} else {
Log.v("PRBTEST","Unsuccesfull save of installation: " + e.getMessage());

ParseErrorHandler handler = new ParseErrorHandler(context);
handler.handleParseError(context, e);
}
}

现在在你的 ParseErrorHandler.java 类中创建构造函数,它包含帮助你在所有方法中做类似事情的上下文,

private Context context;
public class ParseErrorHandler {

public ParseErrorHandler(Context context) {
this.context = context;
}

// your other code...

private static void revertToSignIn() {
ParseUser.logOut();

Global.loggedIn = false;
Global.user = ParseUser.getCurrentUser();

Intent intent = new Intent(context, ActivityStartup.class);
startActivity(intent);
finish();
}
}

希望这对你有帮助..!

关于android - 我如何从这个错误处理类在 Android 中启动一个新的 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651542/

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