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
}