【发布时间】:2017-08-01 14:26:12
【问题描述】:
我有三个活动和两个 AsynTask。
- 活动 1 - 转到 AsyncTask1
- 活动 2 - 转到 AsyncTask2
- 活动 3 - 不需要 AsyncTask
我有一个持续多次动态定义的用户选择向导。我成功地能够跟踪该计数。流下。
为了便于解释,我们将计数保持为 3。
Activity 1 - Activity 首次加载,Count 设置为 1。用户进行选择并单击按钮。这会将用户带到活动 2。
我去Activity 2的方式如下。
我加载了从数据库中提取数据的 AsyncTask。在外部 AsyncTask 文件中,我在 PostExecute 上加载下一个活动。
活动 2 - 用户进行选择并单击按钮。该按钮检查 Count 是否为 1,将其设置为 2。由于计数仍小于 3,因此使用 AsyncTask 返回到 Activity 1。
进程继续,一旦 Count 达到 3,我想去 Activity 3。现在需要在没有任何 AsyncTask 的情况下加载 Activity 3。怎么做?下面是代码。
ImageButton imgButton = (ImageButton) findViewById(R.id.imageButton);
imgButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//code that I process and define value_i_am_taking_forward_successfully. It is working fine.
proceedNext();
}
});
private void proceedNext() {
if (my_counter > max_count) {
//This is not working. I want to start Activity3 here.
Intent intent = new Intent(ctx, Activity3.class);
ctx.startActivity(intent);
}
else {
//This works fine.
String requested_method = value_i_am_taking_forward_successfully;
LoadAsyncTask2 loadAsyncTask2 = new LoadAsyncTask2(this);
loadAsyncTask2.execute(requested_method);
}
}
下面是加载 Activity 的 AsyncTask 中的代码。 result 来自 doInBackground
@Override
protected void onPostExecute(String result) {
Intent intent = new Intent(ctx, Activity1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("value_to_take_forward",result);
ctx.startActivity(intent);
}
有人可以帮忙吗?
以下是我得到的错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
【问题讨论】:
-
使用你的类名而不是
ctx -
成功了!请将其作为答案发布,以便我接受。
标签: android android-fragments android-activity