2014-01-09 122 views
1

我希望能夠在不同的Android活動之間共享視圖。這個觀點是一個音樂播放器,我想永遠站在每一個活動的尾部。我也希望能夠從任何類訪問它,所以我從我的MainActivity靜態引用它。該視圖被稱爲Player在Android活動之間共享視圖的正確方法?

我的MainActivity將其設置....

public class MainActivity extends Activity{ 
public static Player player; 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    MainActivity.player = new Player(this); 
} 

Player類是由充氣我player.xml文件進行。

public class Player extends LinearLayout{ 
private ImageView previousButton, playButton, nextButton, playlistButton; 
private TextView songTitle; 

public Player(Context context) 
{ 
    super(context); 
    init(context); 

} 


private void init(Context context) 
{ 
    LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = layoutInflater.inflate(R.layout.player, this); 

    this.previousButton = (ImageView) view.findViewById(R.id.playerPreviousButton); 
    this.playButton = (ImageView) view.findViewById(R.id.playerPlayButton); 
    this.nextButton = (ImageView) view.findViewById(R.id.playerNextButton); 
    this.playlistButton = (ImageView) view.findViewById(R.id.playerPlaylistButton); 
    this.songTitle = (TextView) view.findViewById(R.id.playerSongTitle); 

} 

如何跨多個活動分享此內容?我在我的Player類中有很多函數,我沒有列出我需要能夠從任何類訪問,而不僅僅是活動類,因此我儘管去了靜態路由,並且只進行了一次初始化。

有人可以幫助我讓我知道正確的方式去做這件事嗎?

+0

您需要爲此實現服務。在服務類中編寫你的函數。從主要活動中啓動服務,然後從應用程序中的任何活動調用函數。 – AndyN

+0

爲了分享您的觀點,請爲您的播放器創建一個佈局文件,並將該佈局文件包含在每個活動的佈局文件中。 – AndyN

回答

0

爲了您的關心,您需要爲此定義一個單獨的XML佈局。

現在,當你需要顯示在另一個佈局,你可以嘗試像這樣的XML ...

<include layout="@layout/your_music_layout"/> 

在地方簡單地調整正是你需要這個地方。

其次,要訪問它的功能,你應該聲明SUPER CLASS。這個超類將被所有其他類擴展。一些這樣的事..

Public class MainActivity extends SuperClass{ 

} 

這裏你的超級類將擴展活動間接地將各個階層的其餘部分在您的應用程序進行擴展。

就是這樣。你很高興與此一起去。

0

正確的做法是不跨多個活動共享View。每個視圖都屬於一項活動,您不應該嘗試分享它。每個視圖都是通過傳遞一個Context來構造的,它與這個Context有關。

您可以爲所有活動創建一個父類,並將必要的代碼放在那裏。通過這種方式,您將可以共享代碼,但仍可創建單獨的對象View

1

如果您只想初始化您的UI,請考慮使用Fragments而不是活動。您可以在屏幕頂部替換各種用戶界面,同時保持您的PlayerFragment處於活動狀態並在底部保持不變。這也意味着每次用戶導航到您的應用程序的不同部分時,您都不必將綁定/解除綁定綁定到您的音頻服務。