【问题标题】:Error when trying to add splash screen - android app尝试添加启动画面时出错 - android 应用
【发布时间】:2015-06-05 15:34:48
【问题描述】:

我是安卓新手

我正在关注这个教程Android splash screen howto,它有点过时了,但无论如何。

我只是将新的布局文件splash.xml添加到res/layout中,然后将图像添加到drawable/mdpi中,然后我将主图像更改为MainActivity.java,即:

setContentView(R.layout.activity_main);

setContentView(R.layout.splash);

activity_main 是默认布局的名称,activity_main.xml,splash 是另一个名为 splash.xml 的布局的名称。

但是应用程序停止了,说应用程序不幸停止了,我什至无法访问它。

我不知道我在这里遗漏了什么,这是 MainActivity.java 上有趣的代码:

 protected void onCreate(Bundle savedInstanceState) 
  {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);



    getWindow().setFormat(PixelFormat.TRANSLUCENT);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(
                         WindowManager.LayoutParams.FLAG_FULLSCREEN,
                         WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.splash);

    relativeLayout=(RelativeLayout) findViewById(R.id.containerImg);
    relativeLayout.setDrawingCacheEnabled(true);
    cameraSurfaceView = (SurfaceView)
                                       findViewById(R.id.surfaceView1);
  //  cameraSurfaceView.setLayoutParams(new FrameLayout.LayoutParams(640, 480));
    cameraSurfaceHolder = cameraSurfaceView.getHolder();
    cameraSurfaceHolder.addCallback(this);
//    cameraSurfaceHolder.setType(SurfaceHolder.
  //                                               SURFACE_TYPE_PUSH_BUFFERS);




    btnCapture = (Button)findViewById(R.id.button1);
    btnCapture.setOnClickListener(new OnClickListener() 
    {   
      @Override
      public void onClick(View v) 
      {
         // TODO Auto-generated method stub
         camera.takePicture(cameraShutterCallback, 
                                       cameraPictureCallbackRaw,
                                       cameraPictureCallbackJpeg);
      }
    });
  } 

我的activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<RelativeLayout
    android:id="@+id/containerImg"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

        <SurfaceView
            android:id="@+id/surfaceView1"
            android:layout_width="1276px"
            android:layout_height="745px"
            android:layout_centerInParent="true" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/surfaceView1"
            android:layout_alignLeft="@+id/surfaceView1"
            android:layout_marginLeft="20px"
            android:src="@drawable/mark3" />

</RelativeLayout>

<Button
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="right|center_vertical"
   android:background="@drawable/camera" />

</FrameLayout>

我的splash.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<ImageView
    android:src="@drawable/splash"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="fitXY"/>
</LinearLayout>

有什么想法吗?

也许我应该为此使用相同的activity_main.xml,不太确定...

提前致谢!

编辑

Logcat:

3774-3774/com.kkoci.photo E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity     ComponentInfo{com.kkoci.photo/com.kkoci.photo.MainActivity}:     java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)
        at android.app.ActivityThread.access$700(ActivityThread.java:150)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:175)
        at android.app.ActivityThread.main(ActivityThread.java:5279)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
        at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
        at com.kkoci.photo.MainActivity.onCreate(MainActivity.java:65)
        at android.app.Activity.performCreate(Activity.java:5283)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)
at android.app.ActivityThread.access$700(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:175)
at android.app.ActivityThread.main(ActivityThread.java:5279)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 你的错误是什么? logcat 说什么?总是发布你的 logcat。
  • 请发布您的错误日志
  • 错误日志在哪里...?
  • 在您的splash.xml 中,RelativeLayout 在哪里?
  • 添加了错误日志......对不起,我忘了

标签: java android xml android-layout


【解决方案1】:
relativeLayout=(RelativeLayout) findViewById(R.id.containerImg);
relativeLayout.setDrawingCacheEnabled(true);
cameraSurfaceView = (SurfaceView)findViewById(R.id.surfaceView1);

这些是您的activity_main xml 文件中存在的视图。当您更改布局文件时,为什么要访问这些视图?

【讨论】:

  • 也许这就是问题所在,我只是按照教程进行操作,但这是基于 Hello World 类型的应用程序,我想我应该在同一个 activity_main 文件上添加对启动画面的支持
  • 在 android 中没有什么叫做闪屏 .. 只是你必须像活动一样实现它.. 闪屏只是像其他活动一样的活动..
  • 一旦你为splash做了一个单独的活动,别忘了在清单中声明它
  • 我知道,这只是一种称呼它的方式,比如“加载”屏幕之类的……是的,我明白了……我会为它创建一个新的 Activity,谢谢两个!
  • @NeoVe 那更好:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多