gpt4 book ai didi

android - 在其他线程中收到信息后开始新 Activity

转载 作者:行者123 更新时间:2023-11-29 17:59:13 26 4
gpt4 key购买 nike

这是我的代码的一部分:单击按钮后,将启动新线程和与服务器的连接。如果连接成功,应用程序应开始新 Activity 并结束当前 Activity 。有人可以解释哪种方式最适合这样做吗?

    transThread.submit(new Runnable()
{
public void run()
{
guiProgressDialog(true);
if(user.length() < 4) guiNotifyUser("Username must have at least 4 characters!");
else if(pass.length() < 4) guiNotifyUser("Password must have at least 4 characters!");
else if(!pass.equals(passrtp)) guiNotifyUser("Password is not same in both fields!");
else if(!isValidEmail(mail)) guiNotifyUser("Your email is not valid email address!");
else if(fname.equals("") || lname.equals("")) guiNotifyUser("All fields are mandatory!");
else {
try {
final String message = AutoDiaryHttpHelper.signUp(user, md5(pass), mail, fname, lname);
guiNotifyUser(message);
//if message equals something start new activity

}
catch(Exception e) {
e.printStackTrace();
}
}
guiProgressDialog(false);
}
});

break;

最佳答案

您可以为此使用 runOnUiThreadHere is a SO answer 展示了如何做到这一点。

我个人喜欢为此使用 AsyncTask。您可以在 doInBackground() 中完成您的工作,然后将值返回给 onPostExecute() 并从那里启动 Activity 或执行您需要的任何操作用户界面

AsyncTask Docs

Here is an answer of mine 显示了使用 AsyncTask 的基本结构和重要细节

从评论中的代码编辑

如果没有 logcat,我不能说出你得到的确切错误,但我看到的第一个问题是当你在 AsyncTask 中初始化 context 时。您不想使用 getApplicationContext() 尤其不是您现在的样子。我想你得到了一个 NPE 因为 context 还没有初始化。您正在构造函数中传递 Context,所以您只需执行

this.context = context

但是,看起来您的 AsyncTaskRegisterActivity 的内部类,这意味着它可以访问 RegisterActivity 的所有成员变量及其上下文。这意味着要启动您的 Activity,您可以使用 RegisterActivity.this 而不是 context

    @Override
protected void onPostExecute(String result)
{
super.onPostExecute(result);
//if (result == "Successful registration!")
//String i;
//i = "da";
context.startActivity(new Intent(RegisterActivity.this,LoginActivity.class)); // change this here

如前所述,context 如果它是一个内部类,则不需要您的构造函数,但如果它是一个单独的文件,它就像

class RegisterTask extends AsyncTask<String, Void, String>{

Context context;
private RegisterTask(Context context){
this.context = context; // use the variable (context) passed in the constructor above

关于android - 在其他线程中收到信息后开始新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218840/

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