2014-01-19 26 views
-1

我有一個應用程序在其菜單中包含ListView,我想鏈接到具有相同佈局樣式的一個活動,但點擊後內容應該不同。 (ListView),歌詞(TextView),「next_button」按鈕,在歌曲之間移動的「previous_button」按鈕,以及歌曲之間移動的「previous_button」按鈕「back_button」按鈕返回ListView和一個「play_tune」按鈕,播放該特定歌曲的音頻。並非所有歌曲都包含音頻,但「play_tune」按鈕位於哪裏,我希望應用圖標ic_launcher-web.png顯示在那裏。如何讓多個活動在一個活動中只改變字符串?

XML文件我想顯示(與音頻的歌曲),如下圖所示:下面

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/song" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#000000" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".ScoutSongs" > 

<TextView 
    android:id="@+id/Title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:textColor="#FFFFFF" 
    android:textSize="20sp" /> 

<ImageButton 
    android:id="@+id/play_tune" 
    android:src="@drawable/play_tune" 
    android:contentDescription="@string/play_tune" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/Title" 
    android:layout_alignTop="@+id/Title" /> 

<ScrollView 
    android:id="@+id/LyricsView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/back_button" 
    android:layout_alignLeft="@+id/Title" 
    android:layout_alignRight="@+id/play_tune" 
    android:layout_below="@+id/play_tune" > 

    <TextView 
     android:id="@+id/Lyrics" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#FFFFFF" /> 

</ScrollView> 

<Button 
    android:id="@+id/back_button" 
    android:layout_width="65dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignRight="@+id/LyricsView" 
    android:text="@string/back" 
    android:textColor="#FFFFFF" /> 

<Button 
    android:id="@+id/previous_button" 
    android:layout_width="95dp" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/back_button" 
    android:layout_alignBottom="@+id/back_button" 
    android:layout_alignLeft="@+id/LyricsView" 
    android:text="@string/previous" 
    android:textColor="#FFFFFF" /> 

<Button 
    android:id="@+id/next_button" 
    android:layout_width="95dp" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/previous_button" 
    android:layout_alignBottom="@+id/previous_button" 
    android:layout_toRightOf="@+id/previous_button" 
    android:text="@string/next" 
    android:textColor="#FFFFFF" /> 

我現在SongActivity.java文件顯示:

package com.lmarshall1995.scoutsongs; 

import com.lmarshall1995.scoutsongs.R; 
import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.Toast; 

public class SongActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.song); 
     Intent i = getIntent(); 
     String Title = i.getStringExtra("Title"); 
     String Lyrics = i.getStringExtra("Lyrics"); 
     String TuneToast = i.getStringExtra("TuneToast"); 
     String Tune = i.getStringExtra("Tune"); 
     setupNavigationButton(); 

     Toast toast = Toast.makeText(this, TuneToast , Toast.LENGTH_LONG); 
     toast.setGravity(Gravity.CENTER, 0, 0); 
     toast.show(); 

     final Button back = (Button) findViewById(R.id.back_button); 
     back.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       finish(); 
      } 
     }); 

     final Button previous = (Button) findViewById(R.id.previous_button); 
     previous.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent previousIntent = new Intent(SongActivity.this, SongActivity.class); 
       SongActivity.this.startActivity(previousIntent); 
       finish(); 
      } 
     }); 

     final Button next = (Button) findViewById(R.id.next_button); 
     next.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent nextIntent = new Intent(SongActivity.this, SongActivity.class); 
       SongActivity.this.startActivity(nextIntent); 
       finish(); 
      } 
     }); 

     final ImageButton play_tune = (ImageButton) findViewById(R.id.play_tune); 
     play_tune.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       ImageButton play_tune = (ImageButton) findViewById(R.id.play_tune); 
       play_tune.setOnClickListener(new View.OnClickListener() { 
        MediaPlayer mp = MediaPlayer.create(SongActivity.this, Tune); 
        public void onClick(View arg0) { 
         if (mp.isPlaying()) { 
          mp.stop(); 
          mp.prepareAsync(); 
          mp.seekTo(0); 
         } else { 
          mp.start(); 
         } 
        } 
       }); 
      } 
     }); 

    } 
    private void setupNavigationButton() {} 
} 

而我的ListView的Menu.java在這裏:

package com.lmarshall1995.scoutsongs; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ImageButton; 
import android.widget.ListView; 

public class Menu extends ListActivity{ 

    String classes[] = {"Song_AliceTheCamel_Activity", "Song_Bingo_Activity", 
      "Song_CampfiresBurning_Activity", "Song_DownAtTheStation_Activity", 
      "Song_EverywhereWeGo_Activity", "Song_FeFi_Activity", 
      "Song_GingGangGooly_Activity", "Song_HeadShouldersKneesToes_Activity", 
      "Song_IfYoureHappyAndYouKnowIt_Activity", "Song_JoesButtonFactory_Activity", 
      "Song_Kumbaya_Activity", "Song_LittleGreenFrog_Activity", 
      "Song_Meatball_Activity", "Song_NationalAnthem_Activity", 
      "Song_OldMacDonald_Activity", "Song_PizzaHut_Activity", 
      "Song_QuartermastersStores_Activity", "Song_RowRowRowYourBoat_Activity", 
      "Song_ShineUpYourButtons_Activity", "Song_ThreeBlindJellyfish_Activity", 
      "Song_Underwear_Activity", "Song_Valerie_Activity", "Song_Worms_Activity", 
      "Song_XCommissionersInTheTown_Activity", "Song_YogiBear_Activity", 
      "Song_ZipADeeDooDah_Activity"}; 

    String items[] = {"Alice The Camel", "Bingo", "Campfire\'s Burning", "Down At The Station", 
      "Everywhere We Go", "Fe Fi", "Ging Gang Gooly", "Head, Shoulders, Knees & Toes", 
      "If You\'re Happy And You Know It", "Joe\'s Button Factory", "Kumbaya", 
      "Little Green Frog", "Meatball", "National Anthem (UK)", "Old MacDonald", "Pizza Hut", 
      "Quartermaster\'s Stores", "Row, Row, Row Your Boat", "Shine Up Your Buttons", 
      "Three Blind Jellyfish", "Underwear", "Valerie", "Worms", 
      "X-Commissioner\'s In The Town", "Yogi Bear", "Zip A Dee Doo Dah"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.menu); 

     final ImageButton settings = (ImageButton) findViewById(R.id.settings_button); 
     settings.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent settingsIntent = new Intent(Menu.this, Settings.class); 
       Menu.this.startActivity(settingsIntent); 
      } 
     }); 

     final ImageButton back = (ImageButton) findViewById(R.id.exit_button); 
     back.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       finish(); 
      } 
     }); 

     setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, items)); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     Intent i = new Intent(Menu.this, SongActivity.class); 
     i.putExtra("Title", "Song_" + classes + "_Title"); 
     i.putExtra("Lyrics", "Song_" + classes + "_Lyrics"); 
     i.putExtra("TuneToast", "To be sung in the tune of \n" + classes); 
     startActivity(i); 
    } 

} 

我所有的標題和歌詞目前都在我的Values \ strings.xml文件中。

如何讓我的所有歌曲在ListView中被選中後放入一個「SongActivity」類中?我相信如果你不止一次寫出任何東西,應該有一個更簡單的方法來做到這一點。

編輯:我怎樣才能讓MediaPlayer mp = MediaPlayer.create(SongActivity.this, Tune);String Tune = i.getStringExtra("Tune");一起工作?

+0

編輯:我如何使MediaPlayer mp = MediaPlayer.create(SongActivity.this,Tune);和String Tune = i.getStringExtra(「Tune」);一起工作? –

+0

這個問題似乎是無關緊要的,因爲它太具體,要求解決一個特殊的,微不足道的問題,可能是因爲作者沒有足夠的編程技能來應用通用的UI模式和/或閱讀文檔。 – 323go

回答

1

當選擇一個列表項目時,請用你想要的額外元素調用你的SongActivity,比如你需要的SongName和其他參數。然後閱讀並相應填寫字段。

onItemSelected方法:

Intent i = new Intent(this, SongActivity.class); 
i.putExtra("songName", "Song name here"); //get song name from the item selected 
.... 
startActivity(i); 

在你SongActivity類:

onCreate(...){ 
    Intent i = getIntent(); 
    String songName = i.getStringExtra("songName"); 
    ... 
} 

編輯:這樣所有其他固定的文本可以包含在SongActivity,只發送歌曲給活動

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    String song = l.getItemAtPosition(position).toString(); //this is the selected song 
    Intent i = new Intent(Menu.this, SongActivity.class); 
    i.putExtra("Song", song); 
    startActivity(i); 
} 
+0

太棒了,你能證實我所做的是你所說的嗎?我如何使MediaPlayer mp = MediaPlayer.create(SongActivity.this,Tune);和String Tune = i.getStringExtra(「Tune」);一起工作?我不認爲這是一個字符串,但我不知道它會是什麼。 –

+0

我是否需要在其他地方的主頁上重新列出「班級」和「項目」。仍然有點困惑這一個。 –

相關問題