【发布时间】:2016-09-01 09:15:53
【问题描述】:
我的应用有两个活动:MainActivity 和 DrawingActivity。在 MainActivity 中显示了一个按钮,在 DrawingActivity 中显示了 GLSurfaceview 上的相机预览。这个想法是,当你启动应用程序时,首先运行 MainActivity,当你按下按钮时,你跳转到初始化相机并显示相机预览的 DrawingActivity。为此,我尝试在附加到按钮的onClickLIstener 回调中定义一个intent 对象。问题是每次我按下按钮时,我的应用程序都会通过在 GLSurfaceView 类上调用 private void stopEglSurfaceLocked() 方法而崩溃。
有趣的是,如果我在onClick 方法之外定义intent,一切正常。
以下是一些相关代码:
主活动:
public class MainActivity extends Activity {
private Button btnStart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnStart = (Button) findViewById(R.id.btnDisplay);
btnStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, DrawingActivity.class);
MainActivity.this.startActivity(intent);
finish();
}
});
}
Manifest.xml:
<application
android:name="com.example.opengltest.AssetsCache"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:largeHeap="true">
<activity
android:name="com.example.opengltest.MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name="com.example.opengltest.DrawingActivity"
android:screenOrientation="landscape">
</activity>
</application>
这是错误的堆栈跟踪:
09-01 12:03:04.117: E/AndroidRuntime(13981): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.SurfaceTexture.updateTexImage()' on a null object reference
09-01 12:03:04.117: E/AndroidRuntime(13981): at com.example.opengltest.DrawingActivity.onNewFrame(DrawingActivity.java:526)
09-01 12:03:04.117: E/AndroidRuntime(13981): at com.google.vrtoolkit.cardboard.CardboardView$StereoRendererHelper.onDrawFrame(CardboardView.java:289)
09-01 12:03:04.117: E/AndroidRuntime(13981): at com.google.vrtoolkit.cardboard.CardboardView$RendererHelper.onDrawFrame(CardboardView.java:598)
09-01 12:03:04.117: E/AndroidRuntime(13981): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1531)
09-01 12:03:04.117: E/AndroidRuntime(13981): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
重要提示: 虽然在 DrawingActivity 类中似乎有问题,但事实并非如此。如果我将绘图活动类作为主类,所以在开始时调用它(没有意图),一切都很好。毫无疑问,DrawingActivity 类不是罪魁祸首,一切似乎都表明问题出在意图上。我正在做一些事情,使得 DrawingActivity 类没有按照它应该运行的方式运行。
【问题讨论】:
-
你能分享你的错误日志吗
-
您确定崩溃是因为开始第二个活动还是与第一个有关?请分享崩溃日志
-
你能分享你的 DrawingActivity 和你的错误日志吗?
-
我发布了错误日志。我理解错误,空指针,我不明白为什么只有当我在 onclicklisterner 回调中启动活动时才会发生此错误...
-
09-01 12:03:04.117: E/AndroidRuntime(13981): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.SurfaceTexture.updateTexImage()' on a null object reference错误来自您的 DrawingActivity 类,请也发布该类。
标签: android button android-intent onclick onclicklistener