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.
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
}