我希望能够在不同的Android活动之间共享View。这个视图是一个音乐播放器,我想永远处于每个活动的页脚。我也希望能够从任何类访问它,所以我从我的MainActivity静态引用它。该视图称为Player
。
我的MainActivity会设置它....
public class MainActivity extends Activity{
public static Player player;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
MainActivity.player = new Player(this);
}
通过膨胀我的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 :(得分:1)
如果您只想初始化Player
用户界面,请考虑使用 Fragments 代替活动。您可以在屏幕顶部更换各种用户界面,同时保持PlayerFragment
有效且不受影响。这也意味着每次用户导航到应用程序的不同部分时,您都不必将UI绑定/取消绑定到音频服务。
答案 1 :(得分:0)
为了您的顾虑,您需要为此定义单独的XML布局。
现在,当您需要在另一个布局中显示XML时,您可以尝试这样...
<include layout="@layout/your_music_layout"/>
只需在您需要的地方进行调整。
其次,要访问它的功能,您应该声明SUPER CLASS。所有其他类将扩展此超类。有点像这样..
Public class MainActivity extends SuperClass{
}
这里你的超级类将扩展Activity,间接将通过你应用程序中所有类的其余部分进行扩展。
就是这样。你很高兴这么做。
答案 2 :(得分:0)
正确的方法是不要在多个活动中共享View
。每个视图都属于一个活动,您不应尝试共享它。每个视图都是通过将Context
传递给它来构建的,并且它与Context
绑定。
您可以为所有活动创建父类,并将必要的代码放在那里。这样您就可以共享代码,但仍然可以创建单独的View
对象。