0

Android 용 뮤직 플레이어를 만들고 있습니다. 내가 시도하고있는 것은 앱이 실행되고 사용자가 목록 항목을 클릭 할 때 재생 목록 을 보여 주며 노래를 재생하는 android_player 활동에 인 텐트가 전달됩니다. 하지만 작동하지 않으며 목록 항목 앱을 클릭하면 충돌이 발생하고 닫힙니다.Android 액티비티는 기본 및 런처 활동으로 선언 된 경우에만 작동합니다.

하지만 나는 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> 

내가 그것을 작동하도록 내 매니페스트 파일을 확인해야합니다 변경됩니다. 재생 목록을 보여줍니다

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 난을 listitem를 클릭하면, 의도

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(); 
      } 
     }); 

로그 고양이 데이터를 다음 전달합니다.

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) 

이 코드가 작동하도록 변경해야하는 사항은 무엇입니까? 나는 안드로이드를 처음 사용합니다. 도와주세요. 감사합니다.

+1

"충돌이 발생하고 닫힙니다."-> logcat을 게시하고 스 니펫에서 어떤 행이 참조되는지 가리 킵니다. –

+0

logcat 및 java 코드도 함께 게시하십시오. –

+0

@Class Stacker가 LogCat 데이터를 추가했습니다. – StarWars

답변

0

내가 누락되었을 수 있지만 itemClickListener에서 두 번째 작업을 시작하지 않고 첫 번째 작업에서 finish()를 호출하는 것처럼 보입니다. 확실히 startActivity (in)를 추가해야합니다. 요구.

+0

startActivity (in)를 사용할 때 두 번째 활동을 시작했지만 의도 한 노래가 재생되지 않습니다 – StarWars

+1

onActivityResult를 거꾸로 사용하려는 것 같습니다. 'currentSongIndex = data.getExtras() .getInt ("songIndex"); // 선택한 노래를 재생 playSong (currentSongIndex); '원하는대로 할 수 있다고 생각하는 두 번째 활동에 대한 oncreate에 – Matt

+0

메서드에서 코딩하는 내용은 무엇입니까? song playSong (currentSongIndex); MediaPlayer의 객체를 만들고 만들어야합니다. 그러면 mediaplayer.sta를 호출하십시오. rt() 다른 활동으로 전환하거나 활동을 파기 한 후에도 이벤트가 중지되지 않습니다. –

0

왜 두 활동을 매니페스트에 실행기로 설정하고 있습니까? 그것을 제거한 다음 확인하십시오.

+0

저는 하나의 MainActivity를 런처 활동으로 만 만들고 있습니다. 그러나 주요 활동은 PlayerActivity를 시작하지 않습니다. – StarWars

+0

lv.setOnItemClickListener (새 OnItemClickListener() 메서드 호출 startActiviy(); 메서드에서 set result 메서드를 호출하고 해당 메서드를 전달합니다. –

+0

startActivity (in)를 사용할 때 두 번째 활동이 시작되었지만 의도 한 노래 – StarWars