2

私はAndroidアプリを作成するためにYouTubeチュートリアルに従っています。チュートリアルの1つで、Listアクティビティを使用してMenuクラスを作成する方法を説明しました。

public class Menu extends ListActivity {

String classes[] = {"Start","example1","example2","example3","example4","example5","example6"};


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, classes));
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    String cheese = classes[position];
    try{
        Class ourClass = Class.forName("com.example.add." + cheese);
        Intent ourIntent = new Intent(Menu.this,ourClass);
        startActivity(ourIntent);
    }catch(ClassNotFoundException e){
        e.printStackTrace();
    }
}

そして、マニフェストにアクティビティを追加します。

<activity
        android:name=".Splash"
        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:exported="false"
        android:name=".Menu"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MENU" />

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

    <activity
        android:exported="false"
        android:name="com.example.add.Start"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.example.add.START" />

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

私のプロジェクトには、カウンターに1つ追加して表示するStartクラス、背景画像、音楽を定義するSplashクラスがあり、これがメインクラスです。Menuクラスを追加する前はアプリは正常に機能していましたが、追加した後、アプリは強制的に閉じ始め、logcatは28行目のSplashクラスでActivityNotFoundExceptionとエラーを示しました

public class Splash extends Activity{

MediaPlayer ourSong;

@Override
protected void onCreate(Bundle Dab) {
    // TODO Auto-generated method stub
    super.onCreate(Dab);
    setContentView(R.layout.splash);
    ourSong = MediaPlayer.create(Splash.this, R.raw.nodebeat);
    ourSong.start();
    Thread timer = new Thread(){
        public void run(){   //framework to start a new thread
            try{
                sleep(5000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }finally{
                Intent openStart = new Intent("com.example.add.MENU");
                startActivity(openStart);
            }
        }
    };
    timer.start();
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    ourSong.release();
    finish();
}

だから私がアンドロイドアプリ開発に不慣れで、ここで打たれたのを手伝ってください。Logcatログへのリンク:-https://docs.google.com/file/d/0BxLaXhL-q50-MHlhUW93SmxNT0U/edit デバッグログ https://docs.google.com/file/d/0BxLaXhL-q50-b1pzbVpIcVNQR2s/エラーログの編集

ありがとう。

4

2 に答える 2

1

起動しようとしているものに対して間違ったインテントフィルターを使用しています。したがって、どちらかを変更します

 <action android:name="android.intent.action.MENU" />

 <action android:name="com.example.add.MENU" />

すべてが一致するように。

または、コード内の呼び出しを次のように変更します。

Intent openStart = new Intent("android.intent.action.MENU");

インテントフィルターについて読む必要があります。

このアクティビティをエクスポートしておらず、その名前を知っているので、明示的なインテントを使用することもできます。インテントフィルタは必要ないと思います。

Intent openStart = new Intent(Splash.this, Menu.class);
startActivity(openStart);
于 2013-01-31T16:30:06.680 に答える
0

下の両方(1と2)の場所での意図的なアクションは同じである必要がありますが、そうではありません。それらを同一にします。

   <intent-filter>
        <action android:name="android.intent.action.MENU" />// (1)

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

 Intent openStart = new Intent("com.example.add.MENU"); (2)
于 2013-01-31T16:31:46.277 に答える