Активность Android работает только в том случае, если она объявлена ​​​​основной и активностью запуска.

Я создаю музыкальный проигрыватель в Android. Я пытаюсь показать список воспроизведения, когда приложение запускается, и пользователь щелкает элемент списка, и намерение передается активности android_player, которая воспроизводит песню. Но это не работает, и когда я нажимаю на элемент списка, приложение вылетает и закрывается.

Но когда я объявляю активность music_player в качестве пусковой установки, она работает. Но я хочу сначала показать плейлист, а не music_player.

У меня есть следующий файл манифеста

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

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
   <activity
        android:name=".MainActivity"
        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=".AndroidMusicPlayerActivity"
        android:label="@string/app_name"
        android:configChanges="keyboardHidden|orientation"
        android:screenOrientation="portrait">
        <-- <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

What changes I should make to my manifest file to make it work.

AndroidMusicPlayerActivity has following code to receive intent

@Override
protected void onActivityResult(int requestCode,
                                 int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == 100){
         currentSongIndex = data.getExtras().getInt("songIndex");

         // play selected song
         playSong(currentSongIndex);
    }

}

MainActivity, который показывает, как плейлист проходит после намерения

 lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // getting listItem index
                int songIndex = position;

                // Starting new intent
                Intent in = new Intent(getApplicationContext(),
                        AndroidMusicPlayerActivity.class);
                // Sending songIndex to PlayerActivity
                in.putExtra("songIndex", songIndex);
                setResult(100, in);
                // Closing PlayListView
                finish();
            }
        });

Данные журнала Cat, когда я нажимаю на элемент списка.

04-30 16:17:16.946: D/OpenGLRenderer(3858): Enabling debug mode 0 04-30
16:17:29.958: W/IInputConnectionWrapper(3858): showStatusIcon on inactive InputConnection 
04-30 16:17:30.018: D/OpenGLRenderer(3858): Flushing caches (mode 0)

Какие изменения я должен внести, чтобы этот код работал. Я новичок в андроиде. Пожалуйста помоги. Спасибо!!


person lightsaber    schedule 30.04.2013    source источник
comment
он падает и закрывается -> опубликуйте свой лог-код и укажите, на какую строку в ваших фрагментах он ссылается.   -  person class stacker    schedule 30.04.2013
comment
Пожалуйста, опубликуйте logcat и свой код Java...   -  person Chintan Soni    schedule 30.04.2013
comment
@Class Stacker добавил данные LogCat   -  person lightsaber    schedule 30.04.2013
comment
Нам нужен вывод logcat при сбое, друг мой.   -  person class stacker    schedule 30.04.2013
comment
04-30 16:25:53.920: W/IInputConnectionWrapper(4504): showStatusIcon на неактивном InputConnection 04-30 16:25:54.030: D/OpenGLRenderer(4504): Очистка кешей (режим 1) @ClassStacker это все, что есть в logcat   -  person lightsaber    schedule 30.04.2013
comment
Когда я раскомментирую фильтр намерений для действия MusicPlayer и закомментирую фильтр намерений для MainActivity в манифесте, приложение работает нормально. Что я делаю не так.   -  person lightsaber    schedule 30.04.2013


Ответы (2)


Я могу что-то упустить, но в вашем itemClickListener вы, кажется, вызываете finish() в своем первом действии, не запуская второе. Конечно, вам нужно добавить startActivity(in); вызов.

person Matt    schedule 30.04.2013
comment
Когда я использую startActivity(in); он начал второе действие, но не играет предполагаемую песню. - person lightsaber; 30.04.2013
comment
Мне кажется, что вы пытаетесь использовать onActivityResult наоборот. Если вы поместите 'currentSongIndex = data.getExtras().getInt(songIndex); // воспроизвести выбранную песню playSong(currentSongIndex);' в вашем oncreate для второго действия, я думаю, он будет делать то, что вы хотите. - person Matt; 30.04.2013
comment
какой у вас код в вашем методе // воспроизвести выбранную песню playSong(currentSongIndex); создайте только объект MediaPlayer и создайте его. Затем вызовите mediaplayer.start(). Он не остановит событие после того, как вы переключитесь на другое действие или уничтожите свою активность. - person Rishabh Bhardwaj; 30.04.2013
comment
@user2145222 user2145222 Я использовал Bundle extras = getIntent().getExtras(); в методе onCreate() второго действия и извлеченном songindex, и теперь он работает нормально. Нужен ли мне метод onActivityResult() во втором действии или я должен его удалить? - person lightsaber; 30.04.2013
comment
Из того, что вы сказали, да, я бы удалил этот код, так как не думаю, что он имеет отношение к тому, что вы хотите. Если вы просто хотите передать простые значения, прочитайте их в методах oncreate или onstart новой активности, добавив их, как вы были. Молодцы, что заработали. - person Matt; 30.04.2013

почему вы делаете обе активности в качестве пусковой установки в манифесте? удали потом проверь.

person Rishabh Bhardwaj    schedule 30.04.2013
comment
Я делаю только одну MainActivity в качестве активности запуска. Но основное действие не запускает PlayerActivity. - person lightsaber; 30.04.2013
comment
вы вызываете метод set result в своем методе lv.setOnItemClickListener(new OnItemClickListener() }), вызовите метод startActiviy(); и передайте в него намерение. - person Rishabh Bhardwaj; 30.04.2013
comment
Когда я использую startActivity(in); он начал второе действие, но не играет предполагаемую песню. - person lightsaber; 30.04.2013