我是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);
}
答案 0 :(得分:17)
使用CurrentClassName.this
Intent i = new Intent(CurrentClassName.this, LoginActivity.class);
getActivity()
:与片段一起使用
当你有嵌套类时,返回此片段当前与之关联的活动。
class.this
与this
不同。
答案 1 :(得分:7)
如果您使用的活动已调用&#34; MyActivity
&#34;然后你可以做到以下几点:
MyActivity.this
这段代码将返回此&#34;当前&#34;外类的对象