2015-09-01 17 views
0

我想在Android中意圖展示新活動時點擊列表項目的點擊偵聽器,以啓動StartApp Ads。但是這對我來說並不適用。StartApp廣告未在listitem上展示請點擊

在第一種方法中的代碼是好的,但不橫幅顯示和在second method顯示橫幅是投擲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) 

完整代碼描述:

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

類含有的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" /> 

我遵循here的StartApp文檔。

回答

1

getActivity之前onCreateView將導致NullpointerException

您正在初始化變量聲明部分中的startAppAd

如果您在onCreateView()之前使用該方法,則getActivity()方法將返回null。

改變它,這個

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 
} 
+2

非常感謝@Boss它的工作一樣!爲它+1。 –

+1

樂意幫忙:) – Emil

+1

@老闆是老闆:P –