尝试在空对象引用上调用虚拟方法“android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()”

2024-04-10

以下是我的片段的代码,我收到上述空异常错误

 /**
  * Created by USer on 09-04-2016.
  */
 public class FeaturedFragment extends android.support.v4.app.Fragment {
     private List url;
     private SliderLayout sliderLayout;
     private GridView gridView;
     private int firstVisiblepos;
     AppnextAPI api;

     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View rootView = inflater.inflate(
                 R.layout.featured, container, false);
         url = new ArrayList<String>();
         url.add("http://192.168.5.51/Wallpapers/Autumn.jpg");
         url.add("http://192.168.5.51/Wallpapers/Tree.jpg");
         url.add("http://192.168.5.51/Wallpapers/Flower.jpg");
         url.add("http://192.168.5.51/Wallpapers/Lion.jpg");
         api = new AppnextAPI(getActivity(), "my id");
         sliderLayout = (SliderLayout) rootView.findViewById(R.id.slider);
         gridView = (GridView) rootView.findViewById(R.id.gridView);
         ThemeShowcase theme = new ThemeShowcase();
         theme.execute("getThemes");
         for (int i = 0; i < url.size(); i++) {
             TextSliderView textSliderView = new TextSliderView(getActivity().getApplicationContext());
             textSliderView.image((String) url.get(i));
             sliderLayout.addSlider(textSliderView);
         }
         sliderLayout.setDuration(4000);
         sliderLayout.setPresetTransformer(SliderLayout.Transformer.Stack);
         return rootView;
     }


     private class ThemeShowcase extends AsyncTask<String, Integer, ArrayList<ThemeModel>> {

         private final String NAMESPACE = "http://tempuri.org/";
         private final String URL = "http://192.168.5.51/WebApplication/WebService.asmx";
         private final String SOAP_ACTION = "http://tempuri.org/";
         private String responseString;
         private ArrayList model = null;
         private ThemeModel dummy;

         @Override
         protected void onPreExecute() {
             super.onPreExecute();
             model = new ArrayList<ThemeModel>();
         }

         @Override
         protected ArrayList<ThemeModel> doInBackground(String... params) {
             try {
                 SoapObject request = new SoapObject(NAMESPACE, params[0]);
                 PropertyInfo sayHelloPI = new PropertyInfo();
                 sayHelloPI.setName("page");
                 sayHelloPI.setValue("1");
                 sayHelloPI.setType(Integer.class);
                 request.addProperty(sayHelloPI);
                 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                         SoapEnvelope.VER11);
                 envelope.dotNet = true;
                 envelope.setOutputSoapObject(request);
                 HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                     androidHttpTransport.call(SOAP_ACTION + params[0], envelope);
                     SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
                     responseString = response.toString();
                 if (!responseString.equalsIgnoreCase("Error occured")) {
                     JSONArray array = new JSONArray(responseString);
                     for (int i = 0; i < array.length(); i++) {
                         JSONObject objct = array.getJSONObject(i);
                         dummy = new ThemeModel();
                         dummy.preview = objct.getString("Preview");
                         dummy.name = objct.getString("Name");
                         model.add(dummy);
                     }
                 }

             } catch (Exception e) {
                 model = null;
                 return model;
             }
             return model;
         }

         @Override
         protected void onPostExecute(ArrayList<ThemeModel> model) {
             if(model!=null) {
                 gridView.setAdapter(new ImageAdapter(getActivity().getApplicationContext(), model));
                 firstVisiblepos = gridView.getFirstVisiblePosition();
             }else{
                 try {
                     Toast.makeText(getActivity().getApplicationContext(), "Site Unreachable", Toast.LENGTH_LONG).show();
                 }catch (Exception e){
                     Log.d("MyApp","exception");
                 }
             }
         }
     }
 }

这是我的图像适配器

 public class ImageAdapter extends BaseAdapter implements View.OnClickListener{

     private Context context;
     private LayoutInflater inflater;
     private ArrayList<ThemeModel> model;
     public ImageAdapter(Context context,ArrayList<ThemeModel> model) {
         this.inflater = LayoutInflater.from(context);
         this.context = context;
         this.model = model;

     }

     @Override
     public int getCount() {
         return model.size();
     }

     @Override
     public Object getItem(int position) {
         return null;
     }

     @Override
     public long getItemId(int position) {
         return 0;
     }

     @Override
     public View getView(int position, View convertView, ViewGroup parent) {
         convertView = inflater.inflate(R.layout.custom_item,null);
         CardView cardView = (CardView)convertView.findViewById(R.id.cardView);
         cardView.setOnClickListener(this);
         ImageView imageView = (ImageView)convertView.findViewById(R.id.imageView);
         final ProgressBar progressBar = (ProgressBar)convertView.findViewById(R.id.progressbar);
         TextView textView = (TextView)convertView.findViewById(R.id.contentName);
         ImageButton imageButton = (ImageButton)convertView.findViewById(R.id.downloadButton);
         textView.setText(model.get(position).getName());
         Picasso.with(context).load(model.get(position).getPreview()).into(imageView, new Callback() {
             @Override
             public void onSuccess() {
                 progressBar.setVisibility(View.GONE);
             }

             @Override
             public void onError() {

             }
         });
         return convertView;
     }

     @Override
     public void onClick(View v) {

     }
 }

我不断地在下方线附近施加力量

gridView.setAdapter(new ImageAdapter(getActivity().getApplicationContext(), model));

错误是

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' on a null object reference

我尝试过使用 getActivity()、getContext() 等,但它们都不起作用


原因是因为当你打电话时getActivity() in the onPostExecute(), the Fragment已经脱离了Activity(例如,当AsyncTask正在执行时,用户单击后退按钮退出活动),所以getActivity()将为空。

解决办法是之前getActivity(), check isAdded()是否为真,如果不为真,则表示片段已经分离,调用getActivity()将返回 null。

记住在AsyncTask中,调用之前的任何地方getActivity(),你最好检查一下isAdded()再次,因为用户可以在 AsyncTask 执行期间随时退出 Activity。

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

尝试在空对象引用上调用虚拟方法“android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()” 的相关文章

随机推荐

  • 注册新成就:(#3502) 成就 URL 中的对象不是 game.achievement 类型

    我正在尝试为我的游戏添加新成就 当我尝试在 Graph API Explorer 上测试它时 我收到以下错误 3502 成就 URL 中的对象不是 game achievement 类型 我按照这篇文章 http developers fa
  • 在asp.net中使用doPostBack函数

    我想在我的链接中使用 doPostBack 函数 当用户单击它时 它不会重定向到另一个页面 并且页面将回发 我正在使用此代码 但它不起作用 我错过了哪里 lt a id Sample href javascript doPostBack P
  • 使用 GitHub 管理多个用户

    有人可以咨询我一件事吗 我们有一个项目 我们刚刚决定雇用更多程序员来完成它 到目前为止 我是唯一一个在 GitHub 上备份代码的程序员 但现在我需要找到一种安全的方法来管理多个程序员 因此 私有项目有一个主分支 其他程序员应该能够克隆它
  • 加载动态创建的 ASCX 控件(通过代码)

    我正在创造Web User Controls通过代码 我的 C 代码写出标记 代码隐藏和设计器文件在回调时写入磁盘 控件创建得很好 我可以将它们添加到我的网络项目中并将它们放在页面上 当我尝试使用加载控件时LoadControl path
  • 如何根据单元格值更改PHP中的单元格表格颜色?

    我刚刚开始使用 php 编程 我做了一个从数据库返回值的表 我正在尝试执行以下操作 根据第三列的值更改其颜色 我也是这么想的 但是数值重复了 而且颜色也不对 有人可以帮我吗 你明白我的问题了吗 谢谢你们 我带来的不便表示歉意 Code ta
  • 防止 Django 表单中的 SQL 注入

    我用它来验证 class MyValidationForm forms Form title forms CharField body forms Textarea taxonomy forms IntegerField 这是我基于阶级的观
  • 使用 Google Apps 脚本插入数据验证

    我正在尝试使用 Google Apps 脚本在 Gsheet 中插入单元格内下拉菜单 数据 gt 验证 gt 项目列表 我想这样做是因为每次我使用电子表格时 项目列表 都会略有变化 我不想每次打开电子表格时都必须转到 数据 gt 验证 gt
  • (Wordpress)我如何获取带有 html 标签的帖子的完整内容 - 未剥离

    我在我的网站上使用 WordPress 和 qtranslate 插件 并且尝试在每篇文章中显示语言标志 Qtranslate 将 html 标签插入到内容和标题中 例如 en gt 对于我在每篇文章中使用的每种语言 所以我需要一个条件来检
  • 用于 Java 项目的 NetBeans 远程编辑?

    我的项目使用了 Play 框架 所以我不需要可以编译的编辑器 我通常喜欢 NetBeans 但希望远程编辑服务器上的源文件以节省时间 我还经常在台式机 上网本之间切换进行开发 因此远程编辑可以使我免于同步开发环境 我对 Netbeans 远
  • 如何根据调试标志让 Django 使用两个不同的数据库

    我想在本地环境中使用简单的 SQLite 数据库 并在生产中使用 Postgresql 数据库 如何配置设置文件以根据以下值了解要使用哪个数据库DEBUG 有多种选择 下面是一个非常便宜的解决方案 Django 始终选择名为 default
  • webpack 是否使 ES6 模块兼容 ES5 浏览器?

    如果我使用ES6导入在 JS 文件中 例如 import tempates from templates js webpack 转换这类似于 webpack require r webpack exports harmony import
  • 如何在Azure WebJob函数中执行异步

    我有一个从服务器获取 api 数据的异步方法 当我在本地计算机上的控制台应用程序中运行此代码时 它会高速执行 每分钟在异步函数中推送数百个 http 调用 然而 当我将相同的代码从 Azure WebJob 队列消息触发时 它似乎同步运行
  • Blazor - 如何动态创建组件

    我想测试是否可以动态创建 Blazor 组件 我找不到任何方法来做到这一点 我尝试了一些在上面找到的动态内容这个链接 https learn blazor com pages dynamic content 但最终还没有得到任何结果 根据对
  • 如何设置JFrame中对象的位置?

    我有标签和 JButtons 我想在 JFrame 中定义位置 import java awt import java net InetAddress import java net UnknownHostException import
  • 我需要关闭 std::fstream 吗? [复制]

    这个问题在这里已经有答案了 可能的重复 我需要手动关闭 ifstream 吗 https stackoverflow com questions 748014 do i need to manually close a ifstream 我
  • UIButton 事件。有什么不同?

    我遇到了一个问题 当我的按钮显示从它调用的弹出窗口时 它应该保持 按下 状态 弹出框是某些过滤器的选择器 过滤器显示在按钮本身上 当我点击它并显示弹出窗口时 无论如何它都会被取消选择 我想我必须重新定义它在触摸事件上的行为并使其不响应标准t
  • 如何通过 Ruby 使用 Paypal 的自适应支付 API 来避免身份验证和时间问题?

    我在尝试从 Ruby 访问 Paypal 的自适应支付 API 时遇到了多个问题 我最初遇到的主要问题是 Paypal 要求其 HTTP 标头全部大写 但 Net HTTP 不保留 HTTP 标头的大小写 它将它们 小写 存储 然后输出 大
  • 输入到 C++ 可执行 python 子进程

    我有一个 C 可执行文件 其中包含以下代码行 Do some calculations for int i 0 i
  • Honeycomb 中的上下文操作栏

    我想根据屏幕上选择的内容更改代码中的操作栏按钮 这有点像 Honeycomb Gmail 应用程序 您可以在其中检查一些邮件项目并获得具有不同外观的不同操作栏 知道我该怎么做吗 要获取操作栏项目 请使用获取操作栏 http develope
  • 尝试在空对象引用上调用虚拟方法“android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()”

    以下是我的片段的代码 我收到上述空异常错误 Created by USer on 09 04 2016 public class FeaturedFragment extends android support v4 app Fragmen