如何在 Android 中从 PostExecute 正确启动 Activity?

2024-04-09

我有一个 AsyncTask,它用来自互联网的解析数据填充自定义列表。

在 PostExecute 中,我填充该列表并准备好将其传输到新的活动。

我这样做:

@Override
protected void onPostExecute(List<VideoDataDescription> result) 
{
    super.onPostExecute(result);
    MainActivity.progressDialog.dismiss();

    context.startActivity(new Intent(context, ResultsQueryActivity.class));


}

上下文在哪里

    private Context context;

在 LogCat 中执行此代码后,我得到一个 Java.lang.NullPointerException。 像我一样启动活动是否可能且正确?

UPD我已经添加了

    private Context mContext;


public YoutubeAndYahooParser(Context context) 
{
    super();
    this.mContext = context;
}

初始化上下文并调用

YoutubeAndYahooParser youtubeAndYahooParser = new YoutubeAndYahooParser(ResultsQueryActivity.this);
                    youtubeAndYahooParser.execute("my string to pass in asynctak");

之后在执行后

Intent intent = new Intent(mContext, ResultsQueryActivity.class);
 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 mContext.startActivity(intent);    

我添加了新标志,因为我已进入 LogCat:

*从 Activity 上下文外部调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?*

我对吗?


您应该传入应用程序上下文而不是本地活动的上下文。 IE。使用 context.getApplicationContext() 并将其保存在 AsyncTask 子类的局部变量中。

代码可能看起来像这样:

public class MyAsyncTask extends AsyncTask {

    Context context;
    private MyAsyncTask(Context context) {
        this.context = context.getApplicationContext();
    }

    @Override
    protected Object doInBackground(Object... params) {
        ...
    }

    @Override
    protected void onPostExecute(List<VideoDataDescription> result) {
        super.onPostExecute(result);
        MainActivity.progressDialog.dismiss();

        context.startActivity(new Intent(context, ResultsQueryActivity.class));
    }
}

你会这样称呼它:

   new MyAsyncTask(context).execute();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Android 中从 PostExecute 正确启动 Activity? 的相关文章

  • 生产中偶尔会发生 android.webkit.WebView 类膨胀错误

    我的应用程序在 Google Play 上 它在大多数设备 数千个用户 上运行良好 但在极少数情况下 占每日活跃用户百分比的一小部分 我得到Error inflating class android webkit WebView当我为我的片
  • 删除视图并重新创建它

    有没有办法删除设置的视图 setContentView R layout set map center mapView MapView findViewById R id mapview 如果我再次调用此视图 则会收到一条错误消息 java
  • 如何使用gradle这样的格式更改apk名称?

    当我使用 gradle 构建应用程序时 我想将 app release apk 文件名更改为如下所示 format appname of package name V version code yyMMdd R T explain appn
  • 在Android内存中存储gif图像

    我对安卓还很陌生 我想将图像保存到内存中 然后从内存中检索图像并将其加载到图像视图中 我已使用以下代码成功将图像存储在内存中 void saveImage String fileName img cnt jpg File file new
  • Android浏览器上的Web应用程序宽度问题

    所以到目前为止我只在 Android 浏览器上遇到过这个问题 基本上我的网站几乎一直运行良好 而且我还没有在 Dolphin Opera 或 Skyfire 上看到这个问题 但偶尔当我从手机主屏幕之一上的书签重新打开 Android 浏览器
  • Mesibo 通话 UI 未更新

    我正在尝试更改 Mesibo Call UI 的配置 但它并没有改变 我尝试如下 MesiboCallConfig mesiboCallConfig new MesiboCallConfig mesiboCallConfig backgro
  • Android相当于javascript的setTimeout和clearTimeout?

    setTimeout 有一个答案https stackoverflow com a 18381353 433570 https stackoverflow com a 18381353 433570 它没有提供我们是否可以像在 JavaSc
  • Android:拍照后调用裁剪活动

    我在解析拍摄照片的 uri 来裁剪活动时遇到问题 在我的应用程序中 用户可以拍摄一张照片或从图库中选择一张照片 然后裁剪并上传 一切听起来都很简单 从图库中选择时 图库应用程序会返回所选照片的 uri 如下所示 content media
  • Android Studio:Android 设备监视器未显示我的设备

    我的真实设备是索尼 Xperia c6502安卓版本4 3 我确定我将其连接到我的计算机然后打开开发者选项 USB调试 on 在 SDK 管理器中 Google USB 驱动程序已安装 I downloaded Xperia Z Drive
  • 如何找到特定路线上两点之间的距离?

    我正在为我的大学开发一个 Android 应用程序 可以帮助学生跟踪大学巴士的当前位置 并为他们提供巴士到达他们的预计时间 截至目前 我获取了公交车的当前位置 通过公交车上的设备 和学生的位置 我陷入了必须找到两个 GPS 坐标之间的距离的
  • 仅在 Android 应用程序中使用 XHDPI 可绘制对象?

    如果您计划在不久的将来支持 LDPI MDPI HPDI 或许还有 XHDPI 那么是否可以在项目中仅包含 XHDPI 可绘制对象并让设备将其缩放到所需的分辨率 我已经测试过在 Photoshop 中将可绘制对象的大小调整为 MDPI 和
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • 从 Handler.obtainMessage() 获取什么参数

    我正在使用线程来执行一些 BT 任务 我正在尝试向 UI 线程发送消息 以便我可以基于我的 BT 线程执行 UI 工作 为此 我使用处理程序 但我不知道如何检索发送到处理程序的数据 要发送数据 我使用 handler obtainMessa
  • Android 26 (O) 通知不显示操作图标 [重复]

    这个问题在这里已经有答案了 随着 Android 26 O 引入通知渠道 我一直在调查 Google 提供的com example android notificationchannels 这个示例按预期工作 直到我尝试添加Action到示
  • 如何在 Android 应用程序中使用多个 Graph API 获取 Facebook Notes 项目的评论?

    我想使用 Graph API 显示 Facebook 页面的注释项目以及这些评论和点赞 为此 我使用 Facebook SDK 中的 asyncFacebookRunner 步骤是这样的 调用 asyncFacebookRunner req
  • 无法在 Java 中输出正确的哈希值。怎么了?

    在我的 Android 应用程序中 我有一个 SHA256 哈希值 我必须使用 RIPEMD160 消息摘要算法进一步对其进行哈希值 我可以输出任何字符串的正确 sha256 和ripemd160 哈希值 但是当我尝试使用ripemd160
  • SQLiteDatabase.openDatabase 与 SQLiteOpenHelper.getReadableDatabase

    这两种方法有什么区别吗 两者都返回一个打开的 SQLiteDatabase 如果数据库不存在 两者都可以创建数据库 当需要读 写时 SQLiteOpenHelper 还具有 getWriteableDatabase 我应该使用哪种方法以及在
  • Android UnityPlayerActivity 操作栏

    我正在构建一个 Android 应用程序 其中包含 Unity 3d 交互体验 我已将 Unity 项目导入 Android Studio 但启动时该 Activity 是全屏的 并且不显示 Android 操作栏 我怎样才能做到这一点 整
  • 画布:尝试使用回收的位图错误

    我是一个相当新的程序员 所以任何建议将不胜感激 我有一个类 每次调用它时都会在循环中运行 AsyncTask AsyncTask 看起来像这样 public class LoadImageTask extends AsyncTask
  • 进程被杀死后不会调用 onActivityResult

    我有一个主要活动 Main 和另一个活动 Sub 由 Main 调用 startActivityForResult new Intent this SubActivity class 25 当我在 Sub 时 我终止该进程 使用任务管理器或

随机推荐

  • Logback-android:日志未写入文件

    尝试使用 logback android 重定向日志消息 以便可以将消息保存在文件中 但是 它没有保存到文件中 这是我的 logback xml 文件配置 它存储在src 主要 资产在我的 Android Studio 中
  • java 的 == 行为不一致

    考虑这段代码 class test public static void main String args test inst test new test int i1 2000 int i2 2000 int i3 2 int i4 2
  • 我无法删除我的 VPC

    我想删除我的一个 VPC 但当我尝试删除时 出现此错误 我们无法删除以下 VPC vpc 8737bde2 10 100 0 0 16 Khoi VPC vpc vpc 8737bde2 具有依赖关系 无法删除 服务 AmazonEC2 状
  • 日期时间比较忽略种类?

    DateTime d1 new DateTime 2015 1 1 0 0 0 DateTimeKind Utc DateTime d2 new DateTime 2015 1 1 0 0 0 DateTimeKind Local Cons
  • SqlException 因为子查询返回超过 1 个值

    我有以下 LINQ 查询 用于构造一个结构以填充到 JavaScript 网格库中 这与本示例无关 但我想我仍然会解释这一点 var output myObjects Select p gt new RowModel ID p LeadUI
  • React hook 渲染额外的时间

    我的代码导致了意外数量的重新渲染 function App const isOn setIsOn useState false const timer setTimer useState 0 console log re rendered
  • (递归)SQL 查询而不是循环

    我正在寻找一个查询来获取以下输出 Id Number 1 241100 2 241110 2 241111 2 241112 2 241113 2 241114 2 241115 表结构 Id Number From To 1 241100
  • 如何在闪亮的应用程序中获取父 URL

    我在我的网站中嵌入了带有 iframe 的 Shiny 应用程序 现在我正在尝试保护我的 Shiny 应用程序 我希望只能在我的网站中访问 iframe 而不是直接通过其 URL 访问 为此 我尝试获取包含我的 Shiny 应用程序内的 i
  • 为什么 fetch 返回承诺待处理?

    我正在使用 fetch 来获取数据 但它始终返回待处理的承诺 我看过很多关于这个问题的帖子 并尝试了所有的可能性 但没有解决我的问题 我想知道为什么 fetch 返回待定状态的承诺 简而言之 fetch 返回待定状态的可能情况是什么 我的一
  • Python - pandas - 将系列附加到空白数据帧中

    假设我有两个 python 中的 pandas 系列 import pandas as pd h pd Series g 4 2 1 1 g pd Series 1 6 5 4 abc 我可以仅使用 h 创建一个 DataFrame 然后将
  • 如何在redis中创建自己的数据库?

    There are 0 to 15 databases in redis 我想使用 redis cli 创建自己的数据库 有什么命令可以实现吗 Redis 数据库并不等同于 MySQL 等 DBMS 中的数据库名称 这是一种为键创建隔离和命
  • SQL Server 中的 Json 转义 unicode

    我得到了带有转义 unicode 符号的 Json 字符串 u041e u043f u043e u0440 u0430 u0448 u0430 u0440 u043e u0432 u0430 u044f VW GOLF 我知道后面的4位数字
  • 在sql server中使用货币$格式?

    我在 mysql 数据库中有数据 例如645 000我需要将其格式化以包含货币符号 例如 645 000 我怎样才能在 SQL 中实现这一点 您不需要也不应该在 SQL Server 中对其进行格式化 相反 您的应用程序需要针对 UI 对其
  • 滚动列表视图导致按钮不可见

    我有一个列表视图 其中列表的每一行都包含一个按钮 基于一个字段 我想让这个按钮不可见 我的适配器内的 getView 方法如下所示 public View getView int position View convertView View
  • 线程“main”中的异常 java.lang.NoClassDefFoundError: org/sqlite/NativeDB

    我正在尝试在 mac 上运行 sqlite 的一个简单示例 我非常确定该代码在 Windows 上运行良好 但在 Mac 上不行 如果有人能帮助我解决这个问题 我真的很感激 代码在 Eclipse 中运行 我在项目中添加了 sqlite j
  • git:将文件从另一个分支签出到当前分支(不要将 HEAD 切换到另一个分支)

    我想将另一个分支中存在的文件的不同版本加载到当前分支中 git help checkout says DESCRIPTION Updates files in the working tree to match the version in
  • UpdatePanel 中的 ASP.NET FileUpload - 仍然无法正常工作

    尝试在 NET 4 5 C Web 应用程序的 updatepanel 中使用 FileUpload 或 AsyncFileUpload 控件 我尝试在母版页中使用标准 Scriptmanager 或 ToolKitScriptManage
  • 子窗口中的 ListView 触发立即关闭,或在滚动时触发

    我有一个相当奇怪的场景 如果我启动一个包含ListView如果有一个中等复杂的委托和足够的项目来轻松超出可见区域 整个子窗口将在启动时立即关闭 降低委托的复杂性将允许窗口打开 但随后快速滚动窗口ListView会强行关闭它 This SSC
  • Typescript 期望 mockImplementation 为所有方法和属性提供模拟

    我正在使用 typescript jest 并且在创建模拟实现时遇到了一些类型检查问题 举个例子 我想嘲笑Credentials对象从aws sdk import Credentials from aws sdk jest mock aws
  • 如何在 Android 中从 PostExecute 正确启动 Activity?

    我有一个 AsyncTask 它用来自互联网的解析数据填充自定义列表 在 PostExecute 中 我填充该列表并准备好将其传输到新的活动 我这样做 Override protected void onPostExecute List