仅当在 Android 中单击按钮后条件为真时才启动 Activity
Posted
技术标签:
【中文标题】仅当在 Android 中单击按钮后条件为真时才启动 Activity【英文标题】:Start Activity only if a condition is true after a button click in Android 【发布时间】: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
成功了!请将其作为答案发布,以便我接受。
【参考方案1】:
使用您当前的 ClassName 而不是 ctx
来源:android.content.Context.getPackageName()' on a null object reference
【讨论】:
【参考方案2】:如果此代码在UI
线程和Activity
本身中运行,那么您应该使用它,
Intent intent = new Intent(this, Activity3.class);
startActivity(intent);
您应该使用Activity
上下文来加载下一个活动。
【讨论】:
【参考方案3】:max_count
的值是多少?
试试my_counter >= max_count
。
【讨论】:
问题不在于计数器。它工作得很好。只是Activity 3没有加载。 作为参考,我提到 max_count 为 3。 我可以通过检查计数器进入“if”的正确条件。问题是一旦 my_count 和 max_count 相等,活动就不会加载。我已经添加了它在我的问题中引发的错误。以上是关于仅当在 Android 中单击按钮后条件为真时才启动 Activity的主要内容,如果未能解决你的问题,请参考以下文章
仅当一个条件为真时才用于 ON DUPLICATE KEY UPDATE 的 Terser 语法?
Javascript:<script src=jquery...仅当条件为真时
MongoDB $and 仅当 $and 在文档的同一数组索引中为真时才查询 - 特别是对于双重嵌套数组 [重复]