StartApp Объявления не отображаются в списке элементов нажмите

Я хотел бы показывать объявления StartApp на прослушивателе кликов элемента списка, когда намереваетесь начать новую деятельность в Android. Но это не сработало для меня следующим образом.

В первом методе код в порядке, но баннер не отображается, а во втором методе для отображения бросает баннер NullPointerException

// первый метод

startAppAd.showAd();
startAppAd.loadAd();

// второй метод

        startAppAd.loadAd(new AdEventListener() {
            @Override
            public void onReceiveAd(Ad ad) {
                System.out.println("Ad received");
                Log.d("MISSION", "on load To Receive Ad");
                startAppAd.showAd();
            }
            @Override
            public void onFailedToReceiveAd(Ad arg0) {

                 Log.d("MISSION", "on Failed To Receive Ad");
            }
        });

Исключение:

09-01 15:33:23.345: E/AndroidRuntime(25452): java.lang.NullPointerException
09-01 15:33:23.345: E/AndroidRuntime(25452):    at android.view.ViewConfiguration.get(ViewConfiguration.java:332)
09-01 15:33:23.345: E/AndroidRuntime(25452):    at com.startapp.android.publish.StartAppAd.load(StartAppSDK:133)
09-01 15:33:23.345: E/AndroidRuntime(25452):    at com.startapp.android.publish.StartAppAd.loadAd(StartAppSDK:316)
09-01 15:33:23.345: E/AndroidRuntime(25452):    at com.startapp.android.publish.StartAppAd.loadAd(StartAppSDK:289)
09-01 15:33:23.345: E/AndroidRuntime(25452):    at   com.rptl.customgrammartopic.list.GrammarTopics$1.onItemClick(GrammarTopics.java:129)
09-01 15:33:23.345: E/AndroidRuntime(25452):    at android.widget.AdapterView.performItemClick(AdapterView.java:301)

Полное описание кода:

Основная деятельность:-

public class MainActivity extends Activity {

private DrawerLayout drawerLayout;
private ListView drawerList;
private ActionBarDrawerToggle drawerToggles;
private String[] menuTitles;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    StartAppSDK.init(this, "*********", true);

    setContentView(R.layout.activity_main);
}
}

Класс, который содержит listView

public class GrammarTopics extends Fragment {

  private StartAppAd startAppAd = new StartAppAd(getActivity());


 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.grammartopics, null);
    ListView listview = (ListView)view.findViewById(R.id.lv_grammartopic);
    listview.setAdapter(new CustomAdapter(getActivity(),
        grammartopics_array, grammardes_array,icon_array));

    listview.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {

        if (position == 0) {

            // First method to be show Ads.
            Intent i = new Intent(getActivity(), Articles.class);
            startActivity(i);
            startAppAd.showAd();
            startAppAd.loadAd();

        } else if (position == 1) {

            // Second method to be show Ads.
            Intent i = new Intent(getActivity(), Adjectives.class);
            startActivity(i);

            startAppAd.loadAd(new AdEventListener() {
                @Override
                public void onReceiveAd(Ad ad) {
                    Log.d("MISSION", "on load To Receive Ad");
                    startAppAd.showAd();
                }

                @Override
                public void onFailedToReceiveAd(Ad arg0) {
                      Log.d("MISSION", "on Failed To Receive Ad");
                }
             });
        }

   @Override
   public void onResume() {
       super.onResume();
       startAppAd.onResume();
   }

   @Override
   public void onPause() {
        super.onPause();
        startAppAd.onPause();
   }

   @Override
   public void onBackPressed() {
        startAppAd.onBackPressed();
        super.onBackPressed();
   }

Файл манифеста: -

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

     <activity
        android:name="com.startapp.android.publish.list3d.List3DActivity"
        android:theme="@android:style/Theme" />
    <activity
        android:name="com.startapp.android.publish.OverlayActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:theme="@android:style/Theme.Translucent" />
    <activity
        android:name="com.startapp.android.publish.FullScreenActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:theme="@android:style/Theme" />

Я следую за StartApp doc отсюда.

1 ответ

Решение

getActivity до onCreateView вызовет NullpointerException,

Вы инициализируете startAppAd в части объявления переменной.

getActivity() Метод вернет ноль, если вы используете его раньше onCreateView(),

Измени это так

   public class GrammarTopics extends Fragment {

  private StartAppAd startAppAd;


 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.grammartopics, null);

    startAppAd = new StartAppAd(getActivity());

   //..remaining code
}
Другие вопросы по тегам