2014-01-09 123 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处于活动状态并在底部保持不变。这也意味着每次用户导航到您的应用程序的不同部分时,您都不必将绑定/解除绑定绑定到您的音频服务。