2014-03-27 2 views
0

Я разработал Android-приложение с libGDX и добавил Admob к нему, но когда я открываю APK на Android, он падает, заявляя, что процесс остановлен.Crash on open приложения для Android с AdMob

Вот мой код в Android-проекте.

public class MainActivity extends AndroidApplication{ 

protected AdView adview; 

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

    AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration(); 
    cfg.useGL20 = true; 


    final TelephonyManager tm =(TelephonyManager)getBaseContext().getSystemService(Context.TELEPHONY_SERVICE); 
    String deviceid = tm.getDeviceId(); 


    RelativeLayout layout = new RelativeLayout(this); 

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 
    setContentView(graphics.getView(), createLayoutParams()); 
    View gameview = initializeForView(new BalloonBreakout(), false); 


    adview = new AdView(this); 
    adview.setAdSize(AdSize.BANNER); 
    adview.setAdUnitId("ca-app-pub-6258330641042393/6188790266"); 

    adview.loadAd(new AdRequest.Builder().addTestDevice(deviceid).build()); 

    RelativeLayout.LayoutParams adparams = new RelativeLayout.LayoutParams(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()/14); 
    adparams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    adparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 

    layout.addView(gameview); 
    layout.addView(adview, adparams); 
    setContentView(layout); 
    } 
} 

Я не уверен, почему это сбой, любая помощь будет принята с благодарностью.

UPDATE:

У меня есть журнал ошибок, но я не знаю, почему я получаю нулевой указатель.

E(3875) Caused by: java.lang.NullPointerException (AndroidRuntime) 
E(3875) at com.sevenbit.Balloon_Breakout.MainActivity.onCreate(MainActivity.java:37)(AndroidRuntime) 

Line 37:

setContentView(graphics.getView(), createLayoutParams()); 

Однако, когда я удалил эту строку, я до сих пор есть нулевой указатель на том же месте, линия 37.

Любые идеи?

+0

Пожалуйста, разместите всю трассировку стека исключений, в том числе часть «Caused by:». Это важно. Кроме того, вы можете просто скопировать/вставить его здесь вместо того, чтобы фотографировать свой экран. Просто используйте 4 пробела перед каждой строкой, чтобы сделать блок кода. – BVB

ответ

0

Вы должны опубликовать или посмотреть на свою трассировку стека. Это скажет вам, в какой строке работает ваш код. В противном случае людям придется угадывать, глядя на ваш код. Проблема может быть где угодно.

+0

Это, вероятно, должно быть опубликовано как комментарий. Это больше похоже на комментарий, чем на ответ – KodyVanRy

+0

У меня недостаточно репутации для комментария. Просто пытаюсь помочь. – Barodapride

1

Ваша проблема (как и все другие сообщения libgdx, которые я видел в последнее время) заключается в том, что libgdx AndroidApplication # initializeForView вызывает Activity # setContextView, чтобы установить свой собственный макет (которого он не должен). Затем вы вызываете setContextView с вашим собственным макетом.

Он, по-видимому, сбой, потому что какой-то код libgdx предполагает, что объект макета был загружен, но его нет, потому что вы заменили его своим.

+0

Спасибо за ответ, но я не совсем уверен, что вы имеете в виду. Любая идея как это исправить? – nikhil1231

+0

Попытайтесь найти какой-нибудь метод libgdx, который устанавливает материал libgdx, но не вызывает setContentView под обложками (это очень плохая форма, это действительно не должно делать, не делая это явным образом). – William

+0

Я понятия не имею, где это происходит, что вы делаете? – nikhil1231