【问题标题】:Is it possible to start an activity in onPostExecute?是否可以在 onPostExecute 中启动活动?
【发布时间】:2012-12-18 15:22:14
【问题描述】:

我需要将我的 LoginMechanism 更改为 asynchTask,以便它不会在 SDK 4.x 中引发 android.os.NetworkOnMainThreadException。我不清楚如何在这个异步任务中开始一个新的意图。我了解工作将在 doInBackground-Method 中完成,并且此返回结果将在 onPostExecute 方法中处理。在这种方法中,我尝试启动新活动和服务,但它显示编译器错误

The constructor Intent(MainActivity.LoginTask, Class<AttachService>) is undefined

这里是 onPostExecute 方法

        @Override
    protected void onPostExecute(String result) {
        super.onPostExecute( result );
        if (result.equals("")){
            loginError.setText(R.string.login_error);
            loginError.setVisibility(View.VISIBLE);
        }
        else{
            loginError.setVisibility(View.INVISIBLE);
            startService(new Intent(LoginTask.this, AttachService.class));
            Log.d(TAG, "setting status of user " + login.getText().toString() + " to stored for service endpoint  " + service_endpoint_spinner.getSelectedItemId());
            if (appData.getLoggedInUser() == null){
                loggedInUser = DBManager.getInstance().storeUser(user,hashedPw,target, true);
                appData.setLoggedInUser(loggedInUser);
                DBManager.getInstance().setUserStatusToStored(loggedInUser);
            }
            startActivity(new Intent(this, ActionActivity.class));          
        }

    }

所有的 startservice 和 startActivity 方法都会产生编译器错误,谁能解释一下原因。 谢谢

【问题讨论】:

标签: android android-asynctask


【解决方案1】:

使用

startActivity(new Intent(Your_Current_Activity.this, ActionActivity.class));  

startActivity(new Intent(getApplicationContext(), ActionActivity.class));

而不是

startActivity(new Intent(this, ActionActivity.class)); 

用于从 onPostExecute 开始新活动

【讨论】:

    【解决方案2】:

    在:

    new Intent(this, ActionActivity.class)

    this”表示 AsyncTask 对象。请改用 (您的班级名称).this

    【讨论】:

      【解决方案3】:

      在AsyncTask里面,this指的是对象,是一个AsyncTask。

      您想引用父活动或上下文,因此将其替换为

      startActivity(new Intent(ParentActivity.this, ActionActivity.class));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-28
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多