Java 如何从活动外部从一个活动移动到另一个活动

Java 如何从活动外部从一个活动移动到另一个活动,java,android,asynchronous,android-activity,Java,Android,Asynchronous,Android Activity,我想知道是否有一种方法可以通过在您想要离开的活动之外发出订单来移动当前活动 我给你看看我得到了什么: 以下是我的splashScreen活动: public class SplashScreen extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ac

我想知道是否有一种方法可以通过在您想要离开的活动之外发出订单来移动当前活动

我给你看看我得到了什么:

以下是我的splashScreen活动:

public class SplashScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash_screen);
    SQLHelper sqlHelper = new SQLHelper(this);
    InfosModel infos = sqlHelper.getInfos();
    RequestModel request = new RequestModel();
    if (infos.getToken().length() == 0){
        request.setType("password");
        new OAuthHelper().execute(request);
    }
 }
}
这是我的OAuthHelper:

public class OAuthHelper extends AsyncTask<RequestModel, Void, TokenModel> {

public OAuthHelper(){
}

@Override
protected void onPreExecute(){
}

@Override
protected void onPostExecute(TokenModel models){
    if (models == null){
        Log.i("infos", "You have no internet connection or the server is unreachable !");
    }
    else{
        Log.i("infos", "request's done with success !");
    }

}

@Override
protected TokenModel doInBackground(RequestModel... request) {
    try
    {
        try
        {
             HttpClient httpclient = new DefaultHttpClient();
             HttpPost httppost = new HttpPost("http://api.listopresto.com/oauth/token");
             List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
             if (request[0].getType() == "password"){
               /* Some Params */
             }
             else{
                 return (null);
             }
             httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
            HttpResponse response = httpclient.execute(httppost);
            BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            String s = reader.readLine();
            Log.i("infos", s);
            Gson gson = new Gson();
            TokenModel tokenObj;
            tokenObj = gson.fromJson(s, new TypeToken<TokenModel>(){}.getType());
            return (tokenObj);
        } catch (ClientProtocolException e) {
            Log.i("infos", "first");
            return (null);
        } catch (IOException e) {
            Log.i("infos", "second");
            return (null);
        }
    }
    catch (Exception e){
        Log.i("infos", "third");
        return (null);
    }
}   
}
公共类OAuthHelper扩展异步任务{
公共OAuthHelper(){
}
@凌驾
受保护的void onPreExecute(){
}
@凌驾
受保护的void onPostExecute(令牌模型模型){
if(models==null){
Log.i(“infos”,“您没有internet连接或无法访问服务器!”);
}
否则{
Log.i(“infos”,“请求成功完成!”);
}
}
@凌驾
受保护的令牌模型doInBackground(RequestModel…request){
尝试
{
尝试
{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://api.listopresto.com/oauth/token");
List nameValuePairs=新的ArrayList();
if(请求[0]。getType()=“密码”){
/*一些情人*/
}
否则{
返回(空);
}
setEntity(新的UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
HttpResponse response=httpclient.execute(httppost);
BufferedReader=new BufferedReader(new InputStreamReader(response.getEntity().getContent());
字符串s=reader.readLine();
Log.i(“infos”,s);
Gson Gson=新的Gson();
TokenModel-tokenObj;
tokenObj=gson.fromJson(s,newTypeToken(){}.getType());
返回(tokenObj);
}捕获(客户端协议例外e){
Log.i(“infos”、“first”);
返回(空);
}捕获(IOE异常){
Log.i(“infos”、“second”);
返回(空);
}
}
捕获(例外e){
Log.i(“信息”,“第三”);
返回(空);
}
}   
}
如果我将助手粘贴到spashscreen类中,当然我可以移动到其他活动,但这是一个助手,我的意思是我必须从其他地方再次使用它,当然我不想再经过我的splashScreen

我想要的是从我的splashScreen转移到好的splashScreen,这取决于我从服务器得到的答案。。。我想在postExecute方法中给出该顺序

有办法做到这一点吗


谢谢你!!;)

将上下文传递给Asynctask的构造函数

new OAuthHelper(SplashScreen.this).execute(request);
然后

doInbackground
中做背景工作。在
doInbackground
中返回结果

然后在
onpost中根据响应执行

context.startActivity(new Intent(context,SecondActivity.class));
另一个选项是使用接口作为对活动的回调,然后从活动本身启动Tactivity。在下面的链接中用黑带检查答案


试着回答好的问题。但是,使用OAuthHelper的构造函数而不是使用onPreExecute不是更好吗?@blackbelt感谢您指出这一点。复制粘贴错误。谢谢拉古南丹和黑带。你们两个摇滚乐;)顺便说一下,您在最后一行代码中忘记了一个括号;)
context.startActivity(new Intent(context,SecondActivity.class));