Search code examples
androidfragmentadsstartapp

StartApp Ads not showing on listitem click


I will like to display StartApp Ads on click listener of list item when intent new activity in android. But it didn't work for me as following way.

In first method code is Ok but banner not display and In second method to display banner is throwing NullPointerException

// first method

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

// second method

        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");
            }
        });

Exception:

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)

Complete code description:

MainActivity:-

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);
}
}

Class which contain 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();
   }

Manifest file:-

<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" />

I follow StartApp doc from here.


Solution

  • getActivity before onCreateView will cause NullpointerException.

    You are initializing startAppAd in the variable declaration part.

    The getActivity() method will return null if you use it before onCreateView().

    Change it like this

       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
    }