仅在Android中按下按钮后条件为真时启动活动

时间:2017-03-11 06:10:17

标签: android android-fragments android-activity

我有三个活动和两个AsynTasks。

  1. 活动1 - 转到AsyncTask1
  2. 活动2 - 转到AsyncTask2
  3. 活动3 - 无需AsyncTask
  4. 我有一个用户选择向导,可以动态定义多次。我成功地跟踪了这一点。在流程之下。

    为了便于说明,我们将计数保持为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
    

3 个答案:

答案 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。