我有三个活动和两个AsynTasks。
我有一个用户选择向导,可以动态定义多次。我成功地跟踪了这一点。在流程之下。
为了便于说明,我们将计数保持为3。
活动1 - 活动首次加载,Count设置为1.用户进行选择并单击按钮。这会将用户带到活动2。
我参加活动2的方式如下。
我加载了从db中提取数据的AsyncTask。在外部AsyncTask文件中,我在onPostExecute上加载下一个活动。
活动2 - 用户进行选择并单击按钮。按钮检查Count是否为1,它将其设置为2.由于计数仍然小于3,它将使用AsyncTask返回到活动1。
进程继续,一旦Count达到3,我想转到Activity 3.现在需要加载Activity 3而不需要任何AsyncTask。怎么做?以下是代码。
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
答案 0 :(得分:1)
使用您当前的 ClassName 代替ctx
来源:android.content.Context.getPackageName()' on a null object reference
答案 1 :(得分:0)
max_count
的价值是多少?
尝试my_counter >= max_count
。
答案 2 :(得分:0)
如果此代码在UI
线程中运行,并且从Activity
本身运行,那么您应该使用此代码,
Intent intent = new Intent(this, Activity3.class);
startActivity(intent);
您应该使用Activity
上下文来加载下一个Activity。