【问题标题】:How to add adMob Banner into getView using the latest SDK - com.google.android.gms.ads如何使用最新的 SDK 将 adMob Banner 添加到 getView - com.google.android.gms.ads
【发布时间】:2014-03-12 23:42:00
【问题描述】:

我正在尝试将 adMob 横幅广告添加到我的片段之一中用于我的 ListView 的 getView 方法中。我正在使用最新的 adMob SDK (com.google.android.gms.ads.)。

我只找到使用旧版 Google SDK 的示例。如果有人有当前版本的 Google admob 示例的链接,请告诉我。

仅供参考 - 我接受了蒂姆的建议。我从 http://jmsliu.com/1482/adding-admob-banner-in-android-listview-header.html 找到了完整的代码示例。

它是我第一次向您展示的不同的,但设置了 3 个活动。经过几个小时的测试,我想我会向您展示我的代码和我目前遇到的错误以及原始代码。我在整个程序中添加了“Log.i”以确定哪一行导致异常结束。广告似乎返回 null。另外,请注意原始版本的代码(在错误部分之后)具有特殊的“keytwordSet”逻辑。我无法摆脱语法错误,所以我从我的版本中删除了它。

AdRequest adRequest = new AdRequest(); Set keywordsSet = new HashSet(); keywordsSet.add("game"); keywordsSet.add("dating"); keywordsSet.add("money"); keywordsSet.add("girl"); adRequest.addKeywords(keywordsSet); adView.loadAd(adRequest);

新代码:

  • PostItemAdapter.java
    • 为 ListView 配置和返回视图的适配器类
  • */ 包 com.jms.admobinlistview;

    导入 java.util.HashSet; 导入 java.util.Set; 导入 com.google.android.gms.ads.AdRequest; 导入 com.google.android.gms.ads.AdSize; 导入 com.google.android.gms.ads.AdView; 导入 com.google.android.gms.ads.mediation.admob.AdMobExtras; 导入android.app.Activity; 导入android.content.Context; 导入android.os.Bundle; 导入android.util.Log; 导入 android.view.LayoutInflater; 导入android.view.View; 导入android.view.ViewGroup; 导入 android.widget.AbsListView; 导入 android.widget.ArrayAdapter; 导入android.widget.ImageView; 导入 android.widget.LinearLayout; 导入android.widget.TextView;

    公共类 PostItemAdapter 扩展 ArrayAdapter { 私人 LayoutInflater 充气机; 私有 PostData[] 数据; 私人活动主活动; 私人 AdView adView;

    public PostItemAdapter(上下文上下文, int textViewResourceId, PostData[] 对象){ 超级(上下文,textViewResourceId,对象); // TODO 自动生成的构造函数存根 mainActivity =(活动)上下文; 充气机 = mainActivity.getLayoutInflater(); 数据=对象; }

    静态类 ViewHolder { 文本视图 postTitleView; 文本视图 postDateView; ImageView postThumbView; }

    public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder;

      if (position == 0) {
          if (convertView == null || !(convertView instanceof AdView)) {
              if (adView == null) {
                  Log.i("1", "msg1");
                  AdView adView = new AdView(mainActivity);
                Log.i("2", "msg2");
    
                  adView.setAdUnitId("ca-app-pub-4409647944042499/8301167762");
                  Log.i("3", "msg3");
    
                  adView.setAdSize(AdSize.BANNER);                    
                  Log.i("4", "msg4");
    
                     // Convert the default layout parameters so that they play >                                          nice with
                  // ListView.
    
                  float density = mainActivity.getResources().getDisplayMetrics>  
                          ().density;
              int height = Math.round(AdSize.BANNER.getHeight() * density);
              AbsListView.LayoutParams params = new AbsListView.LayoutParams(
                  AbsListView.LayoutParams.FILL_PARENT,
                  height);
              adView.setLayoutParams(params);
    
              AdRequest adRequest = new AdRequest.Builder()
                  .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                  .addTestDevice("TEST_DEVICE_ID")
                  .build();
              Log.i("5", "msg5");
    
                  adView.loadAd(adRequest);
                  Log.i("6", "msg6");
    
              }
              Log.i("7", "msg7");
    
              convertView = adView;
              Log.i("8", "msg8");
    
          }
      } else {
          Log.i("8", "msg8");
    
          if (convertView == null || convertView instanceof AdView) {
              Log.i("9", "msg9");
    
              convertView = inflater.inflate(R.layout.postitem, null);
              Log.i("10", "msg10");
    
              viewHolder = new ViewHolder();
              Log.i("11", "msg11");
    
              viewHolder.postThumbView = (ImageView) convertView
                      .findViewById(R.id.postThumb);
              Log.i("12", "msg12");
    
              viewHolder.postTitleView = (TextView) convertView
                      .findViewById(R.id.postTitleLabel);
              Log.i("13", "msg13");
    
              viewHolder.postDateView = (TextView) convertView
                      .findViewById(R.id.postDateLabel);
              Log.i("14", "msg14");
    
              convertView.setTag(viewHolder);
              Log.i("15", "msg15");
    
          } else {
              Log.i("16", "msg16");
    
              viewHolder = (ViewHolder) convertView.getTag();
              Log.i("17", "msg17");
    
          }
          Log.i("18", "msg18");
    
          if (datas[position].postThumbUrl == null) {
              Log.i("19", "msg19");
    
              viewHolder.postThumbView
                      .setImageResource(R.drawable.postthumb_loading);
          }
          Log.i("20", "msg20");
    
          viewHolder.postTitleView.setText(datas[position].postTitle);
          viewHolder.postDateView.setText(datas[position].postDate);
      }
      Log.i("21", "msg21");
    
      return convertView;
    

    } }

    错误:

    03-16 21:34:10.509: I/1(415): msg1 03-16 21:34:10.530: I/2(415): msg2 03-16 21:34:10.530: I/3(415): msg3 03-16 21:34:10.530: I/4(415): msg4 03-16 21:34:10.582: I/5(415): msg5 03-16 21:34:10.609: D/dalvikvm(415): DexOpt: couldn't find field Landroid/content/res/Configuration;.smallestScreenWidthDp 03-16 21:34:10.609: W/dalvikvm(415): VFY: unable to resolve instance field 36 03-16 21:34:10.609: D/dalvikvm(415): VFY: replacing opcode 0x52 at 0x0012 03-16 21:34:10.623: D/dalvikvm(415): VFY: dead code 0x0014-0018 in
    Lcom/google/android/gms/common/GooglePlayServicesUtil;.b (Landroid/content/res/Resources;)Z 03-16 21:34:10.649: W/GooglePlayServicesUtil(415): Google Play Store is missing. 03-16 21:34:10.730: D/dalvikvm(415): DexOpt: --- BEGIN 'ads256706667.jar' (bootstrap=0) --- 03-16 21:34:10.919: D/dalvikvm(415): DexOpt: --- END 'ads256706667.jar' (success) --- 03-16 21:34:10.919: D/dalvikvm(415): DEX
    prep '/data/data/com.jms.admobinlistview/cache/ads256706667.jar': unzip in 2ms, rewrite 193ms 03-16 21:34:11.019: I/Ads(415): Use AdRequest.Builder.addTestDevice
    ("B3EEABB8EE11C2BE770B684D95219ECB") to get test ads on this device. 03-16 21:34:11.059: I/Ads(415): Starting ad request. 03-16 21:34:11.179: D/dalvikvm(415): GC_EXTERNAL_ALLOC freed 269K, 52% free 2677K/5575K,
    external 2032K/2137K, paused 74ms 03-16 21:34:11.499: I/6(415): msg6 03-16 21:34:11.499: I/7(415): msg7 03-16 21:34:11.499: I/8(415): msg8 03-16 21:34:11.509: I/21(415): msg21 03-16 21:34:11.509: D/AndroidRuntime(415): Shutting down VM 03-16 21:34:11.509: W/dalvikvm(415): threadid=1: thread exiting with uncaught exception
    (group=0x40015560) 03-16 21:34:11.589: E/AndroidRuntime(415): FATAL EXCEPTION: main 03-16 21:34:11.589: E/AndroidRuntime(415): java.lang.NullPointerException 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.AbsListView.obtainView
    (AbsListView.java:1432) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.ListView.makeAndAddView
    (ListView.java:1745) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.ListView.fillDown
    (ListView.java:670) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.ListView.fillFromTop
    (ListView.java:727) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.ListView.layoutChildren
    (ListView.java:1598) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.AbsListView.onLayout
    (AbsListView.java:1260) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.view.View.layout(View.java:7175) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.LinearLayout.setChildFrame
    (LinearLayout.java:1254) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.LinearLayout.layoutVertical
    (LinearLayout.java:1130) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.LinearLayout.onLayout (LinearLayout.java:1047) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.view.View.layout(View.java:7175) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.FrameLayout.onLayout (FrameLayout.java:338) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.view.View.layout(View.java:7175) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.LinearLayout.setChildFrame
    (LinearLayout.java:1254) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.LinearLayout.layoutVertical (LinearLayout.java:1130) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.LinearLayout.onLayout
    (LinearLayout.java:1047) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.view.View.layout(View.java:7175) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.widget.FrameLayout.onLayout (FrameLayout.java:338) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.view.View.layout(View.java:7175) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.view.ViewRoot.performTraversals
    (ViewRoot.java:1140) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.view.ViewRoot.handleMessage (ViewRoot.java:1859) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.os.Handler.dispatchMessage (Handler.java:99) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.os.Looper.loop(Looper.java:123) 03-16 21:34:11.589: E/AndroidRuntime(415): at android.app.ActivityThread.main
    (ActivityThread.java:3683) 03-16 21:34:11.589: E/AndroidRuntime(415): at java.lang.reflect.Method.invokeNative(Native Method) 03-16 21:34:11.589: E/AndroidRuntime(415): at java.lang.reflect.Method.invoke(Method.java:507) 03-16 21:34:11.589: E/AndroidRuntime(415): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 03-16 21:34:11.589: E/AndroidRuntime(415): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 03-16 21:34:11.589: E/AndroidRuntime(415): at dalvik.system.NativeStart.main(Native Method) 03-16 21:34:17.879: I/Process(415): Sending signal. PID: 415 SIG: 9

旧版adMob的原始代码:

/** * PostItemAdapter.java * * 配置并返回 ListView 视图的适配器类 * */ 包 com.jms.admobinlistview;

导入 java.util.HashSet; 导入 java.util.Set;

导入android.app.Activity; 导入android.content.Context; 导入 android.view.LayoutInflater; 导入android.view.View; 导入android.view.ViewGroup; 导入 android.widget.ArrayAdapter; 导入android.widget.ImageView; 导入android.widget.TextView;

导入 com.google.ads.AdRequest; 导入 com.google.ads.AdSize; 导入 com.google.ads.AdView;

公共类 PostItemAdapter 扩展 ArrayAdapter { 私人 LayoutInflater 充气机; 私有 PostData[] 数据; 私人活动主活动; 私人 AdView adView;

  public PostItemAdapter(Context context, int textViewResourceId,
          PostData[] objects) {
      super(context, textViewResourceId, objects);
      // TODO Auto-generated constructor stub
      mainActivity = (Activity) context;
      inflater = mainActivity.getLayoutInflater();
      datas = objects;
  }

  static class ViewHolder {
      TextView postTitleView;
      TextView postDateView;
      ImageView postThumbView;
  }

  public View getView(int position, View convertView, ViewGroup parent) {
      ViewHolder viewHolder;

      if (position == 0) {
          if (convertView == null || !(convertView instanceof AdView)) {
              if (adView == null) {
                  adView = new AdView(mainActivity, AdSize.SMART_BANNER,
                          "a151bd35eeb068d");
                  AdRequest adRequest = new AdRequest();
                  Set<String> keywordsSet = new HashSet<String>();
                  keywordsSet.add("game");
                  keywordsSet.add("dating");
                  keywordsSet.add("money");
                  keywordsSet.add("girl");
                  adRequest.addKeywords(keywordsSet);
                  adView.loadAd(adRequest);
              }

              convertView = adView;
          }
      } else {
          if (convertView == null || convertView instanceof AdView) {
              convertView = inflater.inflate(R.layout.postitem, null);

              viewHolder = new ViewHolder();
              viewHolder.postThumbView = (ImageView) convertView
                      .findViewById(R.id.postThumb);
              viewHolder.postTitleView = (TextView) convertView
                      .findViewById(R.id.postTitleLabel);
              viewHolder.postDateView = (TextView) convertView
                      .findViewById(R.id.postDateLabel);
              convertView.setTag(viewHolder);
          } else {
              viewHolder = (ViewHolder) convertView.getTag();
          }

          if (datas[position].postThumbUrl == null) {
              viewHolder.postThumbView
                      .setImageResource(R.drawable.postthumb_loading);
          }

          viewHolder.postTitleView.setText(datas[position].postTitle);
          viewHolder.postDateView.setText(datas[position].postDate);
      }

      return convertView;
  }

}

============================================= ====================================

蒂姆,感谢您回复我。以下是我收到的代码和错误消息。我尝试了几件事,但我不断收到相同类型的错误。你能澄清你给出的解释吗?权限真的是预览吗?

package com.robertrichardson.bxxxyxxxxzxxxxLite;

导入 java.util.ArrayList; 导入 java.util.HashSet; 导入 java.util.Set;

导入 android.annotation.TargetApi; 导入android.content.Context; 导入android.content.Intent; 导入 android.database.DataSetObserver; 导入 android.net.ConnectivityManager; 导入android.os.Build; 导入android.os.Bundle; 导入android.support.v4.content.Loader; 导入android.text.format.DateFormat; 导入android.util.Log; 导入 android.view.ContextMenu; 导入android.view.ContextMenu.ContextMenuInfo; 导入 android.view.LayoutInflater; 导入android.view.View; 导入android.view.ViewGroup; 导入 android.widget.AbsListView; 导入 android.widget.AbsListView.MultiChoiceModeListener; 导入 android.widget.AdapterView.AdapterContextMenuInfo; 导入 android.widget.ArrayAdapter; 导入 android.widget.BaseAdapter; 导入android.widget.Button; 导入 android.widget.CheckBox; 导入android.widget.ImageButton; 导入 android.widget.LinearLayout; 导入 android.widget.ListView; 导入 android.widget.RelativeLayout; 导入android.widget.TextView;

导入 com.actionbarsherlock.app.SherlockListFragment; 进口com.actionbarsherlock.view.MenuInflater; 导入android.app.Activity;

导入 com.google.android.gms.ads.AdListener; 导入 com.google.android.gms.ads.AdRequest; 导入 com.google.android.gms.ads.AdRequest.Builder; 导入 com.google.android.gms.ads.AdSize; 导入 com.google.android.gms.ads.AdView; 导入 com.google.android.gms.ads.doubleclick.PublisherAdRequest; 导入 com.google.android.gms.ads.doubleclick.PublisherAdView; 导入 com.google.android.gms.drive.query.internal.InFilter; 导入 com.robertrichardson.bxxxyxxxxxxxxLite.R.string;

/* * BxxxxListFragment 类:设置并显示列表中的所有 Bxxxx Activity。 */

公共类 BxxxxListFragment 扩展 SherlockListFragment {

  private ArrayList<Bxxxx> mBxxxx;
  private boolean mSubtitleVisible;
  private LayoutInflater inflater;
  private Activity mainActivity;

  private static final String AD_UNIT_ID = "ca-app-pub-4409647944042499/8301167762";

  public static final String TAG = "BxxxxListFragment";

//私有AdView adView; 私人 AdView adView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      /*
       * New ads Logic    
       */

      setHasOptionsMenu(true);
      getSherlockActivity().setTitle(R.string.app_name);
      mBxxxx = BxxxxLab.get(getSherlockActivity()).getBxxxx();
      BxxxxAdapter adapter = new BxxxxAdapter(mBxxxx);
      setListAdapter(adapter);
      setRetainInstance(true);
      mSubtitleVisible = false;
      }

  @Override
  public void onViewCreated(View view, Bundle savedInstanceState) {
      super.onViewCreated(view,  savedInstanceState);

      setEmptyText(getResources().getString(string.new_bxxxx_attack_empty_desc));

      registerForContextMenu(getListView());
      setHasOptionsMenu(true);
  } 

  @TargetApi(11)
  @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup parent,
          Bundle savedInstanceState) {

        View v = super.onCreateView(inflater,  parent,  savedInstanceState);

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
          if (mSubtitleVisible) {
              getSherlockActivity().getSupportActionBar().setSubtitle(R.string.subtitle);
          }
      }

      ListView listView = (ListView)v.findViewById(android.R.id.list);

      if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {

          // Use floating point context menus on Froyer and Gingerbread
          registerForContextMenu(listView);

      } else {

          // Use contextual action bar on Honeycomb and higher
          listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
          listView.setMultiChoiceModeListener(new MultiChoiceModeListener()  {

              public boolean onActionItemClicked(
                      android.view.ActionMode arg0, android.view.MenuItem arg1) {
                  // TODO Auto-generated method stub
                  return false;
              }


              public boolean onCreateActionMode(android.view.ActionMode mode,
                      android.view.Menu menu) {
                  // TODO Auto-generated method stub
                  return false;
              }

              public void onDestroyActionMode(android.view.ActionMode mode) {
                  // TODO Auto-generated method stub

              }
              public boolean onPrepareActionMode(
                      android.view.ActionMode mode, android.view.Menu menu) {
                  // TODO Auto-generated method stub
                  return false;
              }

              public void onItemCheckedStateChanged(
                      android.view.ActionMode mode, int position, long id,
                      boolean checked) {
                  // TODO Auto-generated method stub
              }

          // ActionMode.Callback methods
      }); 
  }
         return v;

}

  @Override
  public void onListItemClick(ListView l, View v, int position, long id) {
      Bxxxx c = ((BxxxxAdapter)getListAdapter()).getItem(position);
      // Start Bxxxx Activity
      Intent i = new Intent(getSherlockActivity(), BxxxxPagerActivity.class);
      i.putExtra(BxxxxFragment.EXTRA_BULLIED_ID, c.getId());
      startActivityForResult(i, 0);
  }

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {>   
      ((BxxxxAdapter)getListAdapter()).notifyDataSetChanged();
  }

  @Override
  public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu, MenuInflater inflater) {
      super.onCreateOptionsMenu(menu, inflater);
      inflater.inflate(R.menu.fragment_bxxxx_list, menu);
   }

  @TargetApi(11)
  @Override
  public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item)
  {
      switch (item.getItemId()) {
      case R.id.settings:
         Intent i=new Intent(getSherlockActivity(), Preferences.class); 
         startActivity(i);
         return(true);
      case R.id.about:
         i=new Intent(getSherlockActivity(),BxxxxContentActivity.class);
         i.putExtra(BxxxxContentActivity.EXTRA_FILE,
         "file:///android_asset/misc/about.html");
         startActivity(i);
         return(true);
      case R.id.help:
         i=new Intent(getSherlockActivity(),BxxxxContentActivity.class);
         i.putExtra(BxxxxContentActivity.EXTRA_FILE,
         "file:///android_asset/misc/help.html");
         startActivity(i);
         return(true);
      case R.id.disclaimer:
         i=new Intent(getSherlockActivity(),BxxxxContentActivity.class);
         i.putExtra(BxxxxContentActivity.EXTRA_FILE,
         "file:///android_asset/misc/disclaimer.html");
         startActivity(i);
          return(true);
      case R.id.menu_item_new_bxxxx:
          Bxxxx bxxxx = new Bxxxx();
          BxxxxLab.get(getSherlockActivity()).addBxxxx(bxxxx);
          i = new Intent(getSherlockActivity(), BxxxxPagerActivity.class);
          i.putExtra(BxxxxFragment.EXTRA_BULLIED_ID,  bxxxx.getId());
          startActivityForResult(i,0);
          return true;
      default:
          return super.onOptionsItemSelected(item);
      }
   }

  @Override
  public void onCreateContextMenu(ContextMenu menu,View v, ContextMenuInfo menuInfo) {
      getActivity().getMenuInflater().inflate(R.menu.bxxxx_list_item_context, menu);
  }

  @Override
  public boolean onContextItemSelected(android.view.MenuItem item) {
      AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
      int position = info.position;
      BxxxxAdapter adapter = (BxxxxAdapter)getListAdapter();
      Bxxxx bxxxx = adapter.getItem(position);

      switch (item.getItemId()) {
         case R.id.menu_item_delete_bxxxx:
             BxxxxLab.get(getActivity()).deleteBxxxx(bxxxx);
             adapter.notifyDataSetChanged();
             return true;
      }
      return super.onContextItemSelected(item);
  }

  private class BxxxxAdapter extends ArrayAdapter<Bxxxx> {
      public BxxxxAdapter(ArrayList<Bxxxx> bxxxx) {
          super(getSherlockActivity(), android.R.layout.simple_list_item_1, bxxxx);
      }    

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {

/* * 新广告逻辑
*/
Log.i("1", "msg1");

      if (position == 0)
      {
          if (convertView == null || !(convertView instanceof AdView)) {
              if (adView == null) {
                  Log.i("2", "msg2");

                  adView = new AdView(mainActivity); <=== Abends on this line

                  Log.i("3", "msg3");

                  adView.setAdUnitId("ca-app-pub-4409647944042499/8301167762");
                   Log.i("4", "msg4");

                  adView.setAdSize(AdSize.BANNER);                    
                   Log.i("5", "msg5");

                 // Convert the default layout parameters so that they play nice with
                  // ListView.

                  float density = mainActivity.getResources().getDisplayMetrics().density;
                  int height = Math.round(AdSize.BANNER.getHeight() * density);
                  AbsListView.LayoutParams params = new AbsListView.LayoutParams(
                      AbsListView.LayoutParams.FILL_PARENT,
                      height);
                  adView.setLayoutParams(params);

                  AdRequest adRequest = new AdRequest.Builder()
                      .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                      .addTestDevice("TEST_DEVICE_ID")
                      .build();

                  adView.loadAd(adRequest);
              }
              convertView = adView;
              return convertView;
        }
          return convertView;
      } else  {
      if (convertView == null || convertView instanceof AdView) {
      // If we weren't given a view, inflate one
         if (convertView == null) {
             convertView = getSherlockActivity().getLayoutInflater()
                      .inflate(R.layout.list_item_bxxxx, null);
      }  
      // Enter the view of this Bxxxx Attack
      Bxxxx c = getItem(position);

      TextView titleTextView =
              (TextView)convertView.findViewById(R.id.bxxxx_list_item_titleTextView);
      titleTextView.setText(c.getTitle());
      TextView dateTextView =
              (TextView)convertView.findViewById(R.id.bxxxx_list_item_dateTextView);
      dateTextView.setText(DateFormat.format("EEEE, MMM dd, yyyy  hh : mm a", c.getDate()).toString());

      CheckBox resolvedCheckBox =
              (CheckBox)convertView.findViewById(R.id.bxxxx_list_item_resolvedCheckBox);
      resolvedCheckBox.setChecked(c.isResolved());

      return convertView;
      }
      return convertView;
   }          
}

}

  @Override
  public void onResume() {
      super.onResume();
      ((BxxxxAdapter)getListAdapter()).notifyDataSetChanged();
      }
  }

03-18 06:52:29.785: D/dalvikvm(932): VFY: replacing opcode 0x6f at 0x0006 03-18 06:52:30.085: I/1(932): msg1 03-18 06:52:30.085: I/2(932): msg2 03-18 06:52:30.085: D/AndroidRuntime(932): Shutting down VM 03-18 06:52:30.095: W/dalvikvm(932): threadid=1: thread exiting with uncaught exception (group=0x40015560) 03-18 06:52:30.135: E/AndroidRuntime(932): FATAL EXCEPTION: main 03-18 06:52:30.135: E/AndroidRuntime(932): java.lang.NullPointerException 03-18 06:52:30.135: E/AndroidRuntime(932): at android.view.ViewConfiguration.get(ViewConfiguration.java:228) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.view.View.(View.java:1878) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.view.ViewGroup.(ViewGroup.java:281) 03-18 06:52:30.135: E/AndroidRuntime(932): at com.google.android.gms.ads.AdView.(Unknown Source) 03-18 06:52:30.135: E/AndroidRuntime(932): at com.robertrichardson.bxxxyxxxxzxxxLite.BxxxxListFragment$BxxxxAdapter.getView(BxxxxListFragment.java:251) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.AbsListView.obtainView(AbsListView.java:1430) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.ListView.makeAndAddView(ListView.java:1745) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.ListView.fillDown(ListView.java:670) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.ListView.fillFromTop(ListView.java:727) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.ListView.layoutChildren(ListView.java:1598) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.AbsListView.onLayout(AbsListView.java:1260) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.view.View.layout(View.java:7175) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.view.View.layout(View.java:7175) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.view.View.layout(View.java:7175) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.view.View.layout(View.java:7175) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.view.View.layout(View.java:7175) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.view.View.layout(View.java:7175) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 03-18 06:52:30.135: E/AndroidRuntime(932): at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)

【问题讨论】:

    标签: java android admob


    【解决方案1】:

    通过声明同名的局部变量,您似乎在新代码中隐藏了类变量“adView”。由于范围的原因,您将 convertView 设置为全局 adView,它始终为空。只需将“AdView adView =”更改为“adView =”

    【讨论】:

    • 哇。就是这样。它在模拟器中工作得很好。现在我需要做的就是将此逻辑添加到我要发布的程序中的列表片段中。感谢您的帮助:)
    • 没有问题。顺便说一句,欢迎来到 Stack Overflow,如果您有需要,请不要忘记选择问题的答案(关闭它)。
    • 现在使用我的 ListFragment ,我尝试在 adView 中设置的活动出现空指针异常错误。您知道在片段中设置广告视图的最佳方式吗?
    • 这可能不是广告浏览问题;它可能是关于使用片段管理您的活动生命周期。不要将成员变量存储在活动中,使用 getActivity() 检索它。您不应该在 Android 中自行管理许多参考资料,因为它们可能会超出您的权限范围。
    • 对主要问题的进一步编辑使其他人难以从中获得有用的信息。最好为单独的主题打开新问题。我的意思是权限:google.com/search?q=define%3Apurview 至于要进行的更改,请执行 'mainActivity = getActivity();'在 onCreateView 中使用它之前 - 不要使用过时的活动参考。
    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多