Android从匿名类中获取活动

时间:2015-08-09 10:43:09

标签: java android android-asynctask

我是Android开发和Java的新手。这是基本设置:我有一个带containerClient的启动画面来检查服务器可用性。在this线程之后,我在我的活动中进行了回调。这比在AsyncTask中完成工作更有意义,因为我想在不同的活动中重用这个任务。

然而,在我的回调中,我会检查状态是否正常。如果是,它应该启动下一个活动。但是从我的回调的上下文中,我不知道如何获得我的OnPostExecute()引用,我需要它作为Intent的参数。

这是我在OnCreate下的Activity中的代码:

Activity

失败的部分位于 //Check server status CheckServiceTask t = new CheckServiceTask(new OnTaskCompleted<ShaggyServiceStatus>() { @Override public void onTaskCompleted(ShaggyServiceStatus result) { Log.i(TAG, "Callback. Result: " + result.getStatus()); ProgressBar pb = (ProgressBar) findViewById(R.id.splash_progress); pb.setVisibility(View.INVISIBLE); if (result.getStatusCode() == 999){ TextView t = (TextView) findViewById(R.id.splash_status_text); t.setText(result.getStatus()); return; } Intent i = new Intent(getActivity(), LoginActivity.class); startActivity(i); finish(); } }); t.execute(); 。那个电话不可用。使用getActivity()会抛出错误(我理解,因为我在this的上下文中)。

为了完整性,这是OnTaskCompleted的接口:

OnTaskCompleted

这是CheckServiceTask类:

public interface OnTaskCompleted<T> {
    public void onTaskCompleted(T result);
}

2 个答案:

答案 0 :(得分:17)

使用CurrentClassName.this

Intent i = new Intent(CurrentClassName.this, LoginActivity.class);

getActivity():与片段一起使用

  

返回此片段当前与之关联的活动。

当你有嵌套类时,

class.thisthis不同。

答案 1 :(得分:7)

如果您使用的活动已调用&#34; MyActivity&#34;然后你可以做到以下几点:

MyActivity.this

这段代码将返回此&#34;当前&#34;外类的对象