- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试修复游戏中的计费问题。现在一切都很好,除非我购买了一个元素(也应该删除广告)并且我重新加载游戏,游戏在加载屏幕时崩溃。我发现 Main.java onResume Activity 有问题,并且需要与 Adview 相关,但我不熟悉它。
Here is the logcat error:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to resume activity {com.games.finddifference2.hd/com.games.finddifference2.hd.Main}:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.a()' on a null object reference
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3333)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2671)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1493)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5769)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.a()' on a null object reference
at com.games.finddifference2.hd.Main.onResume(SourceFile:264)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1269)
at android.app.Activity.performResume(Activity.java:6691)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3318)
还有 Main.java:
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.DialogInterface.OnClickListener;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.AlphaAnimation;
import android.widget.RelativeLayout;
import com.tapjoy.TapjoyConnect;
/**
* The initial Android Activity, setting and initiating
*/
@SuppressLint("NewApi")
public class Main extends Activity {
/** Our own OpenGL View overridden */
private OpenGLRenderer openGLRenderer;
//private final boolean isGoogle = false;
public AdView adView;
private InterstitialAd interstitial;
private RelativeLayout rl;
private RelativeLayout.LayoutParams relativeParamsTOP;
private RelativeLayout.LayoutParams relativeParamsBOTTOM;
private Context mContext;
private boolean fullgame = true;
private boolean adshown = false;
private boolean tapjoy = false;
private AdRequest adRequest;
public Handler handler = new Handler() {
public void handleMessage(Message msg) {
Log.i("Handler", "Handler called with code: " + msg);
AlphaAnimation animation = new AlphaAnimation( 0.0f, 1.0f );
animation.setDuration( 400 );
animation.setFillAfter( true );
animation.setInterpolator( new AccelerateInterpolator() );
AlphaAnimation animation2 = new AlphaAnimation( 1.0f, 0.0f );
animation2.setDuration( 400 );
animation2.setFillAfter( true );
animation2.setInterpolator( new AccelerateInterpolator() );
switch(msg.what)
{
case 0:
try {
adView.startAnimation( animation2 );
adView.setVisibility(View.GONE);
adshown = false;
this.postDelayed(new Runnable() { public void run() {
try {
//adshown = false;
rl.removeView(adView);
} catch (Exception e) { e.printStackTrace(); }
} }, 400);
} catch (Exception e) { e.printStackTrace(); }
break;
case 1:
if (!fullgame && !adshown) {
try {
adshown = true;
rl.addView(adView, relativeParamsBOTTOM);
adView.startAnimation( animation );
adView.setVisibility(View.VISIBLE);
} catch (Exception e) { e.printStackTrace(); }
}
break;
case 2:
if (!fullgame && !adshown) {
try {
adshown = true;
rl.addView(adView, relativeParamsTOP);
adView.startAnimation( animation );
adView.setVisibility(View.VISIBLE);
} catch (Exception e) { e.printStackTrace(); }
}
break;
case 3:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
break;
case 4:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
break;
case 5:
if (interstitial.isLoaded()) {
interstitial.show();
}
break;
default:
break;
}
}
};
/**
* Initiate the OpenGL View and set our own
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
rl = new RelativeLayout(this);
relativeParamsTOP = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
relativeParamsBOTTOM = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
relativeParamsTOP.addRule(RelativeLayout.ALIGN_PARENT_TOP);
relativeParamsBOTTOM.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
SoundManager.getInstance();
SoundManager.initSounds(this);
SoundManager.loadSounds();
SharedPreferences pref = mContext.getSharedPreferences("Settings", Context.MODE_PRIVATE);
fullgame = pref.getBoolean("Ads", false);
// Create the adView
if (!fullgame) {
adView = new AdView(this);
adView.setAdUnitId(getString(R.string.admob_banner_id));
adView.setAdSize(AdSize.SMART_BANNER);
// Create the interstitial.
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId(getString(R.string.admob_interstitial_id));
}
// TAPJOY
try {
TapjoyConnect.requestTapjoyConnect(this, "3a62180b-8dd2-487c-9af3-30e6455f562b", "X0J1DTeFNZ95yMAdcx8w");
Log.i("Tapjoy", "Tapjoy connected");
tapjoy = true;
} catch (Exception e)
{
e.printStackTrace();
}
try {
openGLRenderer = new OpenGLRenderer(this, handler);
} catch (Exception e)
{
e.printStackTrace();
}
// Add the adView to it
rl.addView(openGLRenderer);
if (!fullgame) {
try {
adView.setVisibility(View.GONE);
adView.loadAd(new AdRequest.Builder().build());
adRequest = new AdRequest.Builder().build();
interstitial.loadAd(adRequest);
Log.i("Ads", "----- request loaded");
}
catch (Exception e)
{
e.printStackTrace();
}
}
setContentView(rl);
}
/**
* Remember to resume the glSurface
*/
@Override
protected void onResume() {
super.onResume();
openGLRenderer.onResume();
adView.resume();
Log.i("OpenGL", "onResume called");
if (interstitial != null && adRequest != null) {
interstitial.loadAd(adRequest);
} else {
interstitial = new InterstitialAd(this);
interstitial.setAdUnitId(getString(R.string.admob_interstitial_id));
adRequest = new AdRequest.Builder().build();
interstitial.loadAd(adRequest);
}
}
/**
* Also pause the glSurface
*/
@Override
public void onStart() {
super.onStart();
final SharedPreferences settings =
getSharedPreferences("localPreferences", MODE_PRIVATE);
if (settings.getBoolean("isFirstRun", true)) {
new AlertDialog.Builder(this)
.setMessage("We use device identifiers and share it with our partners to improve your user experience. See details in Privacy Policy.")
.setNeutralButton ("Privacy Policy", new DialogInterface.OnClickListener () {
@Override
public void onClick (DialogInterface dialog, int which) {
openBrowserLink (Main.this, "http://test.com");
}
})
.setPositiveButton ("Ok", new DialogInterface.OnClickListener () {
@Override
public void onClick(DialogInterface dialog, int which) {
settings.edit().putBoolean("isFirstRun", false).commit();
}
}).show();
}
}
public static void openBrowserLink (Context c, String str) {
Intent i = new Intent (Intent.ACTION_VIEW);
i.setData (Uri.parse (str));
c.startActivity (i);
}
@Override
protected void onPause() {
adView.pause();
openGLRenderer.onPause();
Log.i("OpenGL", "onPause called");
super.onPause();
}
@Override
protected void onDestroy() {
try { adView.destroy(); } catch (Exception e) { e.printStackTrace(); }
try { openGLRenderer.onDestroy(); } catch (Exception e) { e.printStackTrace(); }
try { SoundManager.cleanup(); } catch (Exception e) { e.printStackTrace(); }
if (tapjoy) try { TapjoyConnect.getTapjoyConnectInstance().sendShutDownEvent(); } catch (Exception e) { e.printStackTrace(); }
super.onDestroy();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!openGLRenderer.mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
}
最佳答案
我不确定,但我认为是在 adView 未定义时。在OnCreate中,如果fullgame = true -> adView未定义 -> 在 onResume 中:adView.resume() 且 adView 为 null
关于java - 安卓错误: Unable to resume activity Adview on a null object reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39342618/
我的几个 Android 应用程序在 logcat 输出中显示以下类型的消息: I/UsageStats( 59): Unexpected resume of com.totsp.test whi
因此,在“On Error GoTo 执行一次”下出现了几个 SO 问题和 Google 结果,几乎在每种情况下,推荐的解决方案都是添加 Err.Clear或者Resume的一些论坛清除错误。 VBA
我正在构建一个基于文本的 RPG,并且我已经成功地向我的程序添加了一些 .wav 文件,我也能够正常播放它们而没有问题任何一个。 目前发生了什么? 我有 2 个 .wav 文件,一个用于一般背景音乐
在那里, 我修改了 Lua 5.0 在线文档中的“perm”示例:http://www.lua.org/pil/9.3.html .我所做的是将 __call() 元方法重新指向 perm() 函数。
我意识到这是一个较旧的编程环境,但我必须清理一些 VB6代码,我发现它大部分使用: On Error Resume Next 使用On Error Resume Next的普遍共识是什么? ? 当然,
当我尝试恢复挂起(可恢复)编排实例时,出现以下错误。 场景:请求通过 DB2 静态请求 - 响应端口,但由于访问权限被拒绝而失败。我可以在管理控制台中看到两个暂停的实例,一个与端口相关,另一个与编排相
如何从最后上传的 block 中获取响应数据?我在任何地方都找不到它,我唯一发现的是您只能在错误时访问该消息 谢谢 最佳答案 找到了!如果您想从上传的文件中检索数据,您需要: r.on('fi
我无法建立exe: 1> ------ Assembly started: project: B, Configuration: Debug Any CPU B.vb (38.9): error BC
我在 aframe (ar.js) 中有一个 360° 旋转动画,我想暂停并继续它,而我所能做的就是暂停但从头开始重新开始。 Animation docum
我认为答案是否定的,但 Twilio 是否提供暂停/恢复录制的功能?用例正在录制通话,但在收集敏感信息时暂停录制。从 REST 文档来看,它似乎不是受支持的功能。认为有人可能已经找到了满足此要求的一些
我有一个包含 5 个模块的多模块 maven 项目。这些模块是分层的,因此一些依赖于构建的第一个(它是我的模型类),而一些依赖于构建的第二个(那些是核心应用程序类)。最后一个构建的是一个依赖于所有其他
如果我运行一个异步调用 onResume 是否有一个好的方法来检测异步调用是否正在运行以不再调用它? 因为我在 fragment 的 onResume 中使用 AsynTask 进行网络调用,它似乎被
如何向这个 javascript 倒数计时器添加恢复按钮? JS $(document).ready(function () { var $worked = $("#timer"); function
找不到明确的答案,基本上我有一个 EditText 字段的 Activity 。软键盘在 list 中设置为可见,因此当 Activity 开始时键盘是可见的,但是如果用户导航离开并使用后退按钮返回,
我正在看generators in Rust ,并决定试一试。我实现了我能找到的最基本的例子: #![feature(generators, generator_trait)] use std::op
我知道这之前已经发布过,但我是 swift 的新手,我想根据我的情况寻求帮助。所以我需要运行一个计时器,当 stopMusic() 被调用时(在我的应用程序中的某个地方),我需要暂停计时器,然后当 p
Android 中的共享首选项有问题 - 我希望能够将一些字符串(保存图片的 ID)作为下一次发布的最爱 - 它工作完美,它可以识别 ID 是否已经在共享首选项并在必要时将其删除,但是当我通过按下主页
我在我的 Node.js-express 应用程序中使用 Resumable.js。我可以知道文件传输成功了,因为我可以 console.log(req.body) 并在下面看到这个...... {
一年好景君须记,最是橙黄橘绿时。金三银四,秣马厉兵,没有一个好看的简历模板怎么行?无论是网上随便下载还是花钱买,都是一律千篇的老式模版,平平无奇,味同嚼蜡,没错,蜡都要沿着嘴角流下来了。本次我们基于
启用或禁用错误处理程序。 说明 如果在您的代码中未使用OnErrorResumeNext语句,所发生的运行时错误将显示错误信息,同时,代码的执行也随之终止。但是具体操作由运行代码的主机决定。主机
我是一名优秀的程序员,十分优秀!