0

main.java(スプラッシュ画面) からIntro.javaAndroid アプリケーションに移動しようとしています。しかし、私は次のエラーが発生しています...

thread exiting with uncaught exception (group=0x40015560)

これは私のコードです...

main.java:

public class main extends Activity {
/** Called when the activity is first created. */

boolean _active = true;
final int _splashTime = 2000; // time to display the splash screen in ms

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);



    // thread for displaying the SplashScreen
    Thread splashTread = new Thread()
    {
        @Override
        public void run()
        {
            try {
                int waited = 0;
                while(_active && (waited < _splashTime)) {
                    sleep(100);

                    // waited is incremented by 100 after every sleep for 100 ms
                    if(_active) {
                        waited += 100;
                    }
                }
            } 
            catch(InterruptedException e) {

            }
            finally {

                    finish();

                    Intent inte = new Intent(main.this, Intro.class);
                    startActivity(inte);
                    }
        }
    };

    splashTread.start();


}
// this is to skip splash screen by touch event
@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        _active = false;
    }
    return true;
}

}

はじめに.java

public abstract class Intro extends Activity implements OnClickListener
{
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) 
{
    Log.d("Error"," Intro Started ");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.intro);


     RelativeLayout layout = (RelativeLayout) findViewById(R.layout.intro);
     layout.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View arg0, MotionEvent arg1)
    {
         Log.d("Error"," Touch Listener set "); 

        Intent i=new Intent(Intro.this,features.class);  
        startActivity(i);
        return false;
    }


});
}
}

intro.java は、ユーザーのタッチによって features.java に移動するはずでした...

マニフェスト ファイル

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ubuntu.app"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application
    android:icon="@drawable/ubundroid"
    android:label="@string/app_name" >
    <activity
        android:name=".main"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity   android:name=".Intro" />
    <activity   android:name=".Feature"/>
</application>

</manifest>

Logcat :

 D/dalvikvm(1229): newInstance failed: p0 i0 [0 a1
 D/AndroidRuntime(1229): Shutting down VM
W/dalvikvm(1229): threadid=1: thread exiting with uncaught exception (group=0x40015560)
 E/AndroidRuntime(1229): FATAL EXCEPTION: main
 E/AndroidRuntime(1229): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.ubuntu.app/        com.ubuntu.app.Intro}: java.lang.InstantiationException: com.ubuntu.app.Intro
 E/AndroidRuntime(1229):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
E/AndroidRuntime(1229):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
E/AndroidRuntime(1229):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
E/AndroidRuntime(1229):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
 E/AndroidRuntime(1229):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(1229):     at android.os.Looper.loop(Looper.java:123)
 E/AndroidRuntime(1229):    at android.app.ActivityThread.main(ActivityThread.java:3683)
 E/AndroidRuntime(1229):    at java.lang.reflect.Method.invokeNative(Native Method)
 E/AndroidRuntime(1229):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(1229):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(1229):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(1229):     at dalvik.system.NativeStart.main(Native Method)
 E/AndroidRuntime(1229): Caused by: java.lang.InstantiationException: com.ubuntu.app.Intro
E/AndroidRuntime(1229):     at java.lang.Class.newInstanceImpl(Native Method)
 E/AndroidRuntime(1229):    at java.lang.Class.newInstance(Class.java:1409)
 E/AndroidRuntime(1229):    at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
 E/AndroidRuntime(1229):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
 E/AndroidRuntime(1229):    ... 11 more

前もって感謝します...

===========================編集===================== ===============

Intro.java のすべてのタッチ イベントを削除すると、実行が開始されました。新しいJavaファイルは次のとおりです。

package com.ubuntu.app;

import android.app.Activity;



import android.os.Bundle;
import android.util.Log;



public  class Intro extends Activity
{
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) 
{
    Log.d("Error"," Intro Started ");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.intro);

}
}

しかし、ユーザーのタッチによって次のアクティビティに進む正しい方法を取得したいと思います..

4

2 に答える 2

1

使用する

Intent i=new Intent(Intro.this,Feature.class);  
        startActivity(i);

それ以外の

 Intent i=new Intent(Intro.this,features.class);  
        startActivity(i);

または features がアクティビティの場合は、マニフェストにも登録します。

<activity   android:name=".features"/>
于 2012-06-28T11:31:13.583 に答える
0
  • アクティビティ ComponentInfo{com.ubuntu.app/com.ubuntu.app.Intro
    } をインスタンス化できません: java.lang.InstantiationException: com.ubuntu.app.Intro

..

public abstract class Intro extends Activity implements OnClickListener

intro は抽象クラスであり、インスタンスにすることはできません。このクラスを起動すると、android はエラーを発生させるインスタンスを作成しようとします。

コードを書く必要があると思います

public  class Intro extends Activity implements OnClickListener
{
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) 
{
    Log.d("Error"," Intro Started ");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.intro);

}

public void onClick(View v) {
    //handle button event 
} 
}
于 2012-06-28T11:31:06.873 に答える