UI没有响应屏幕方向-Android

时间:2012-11-06 04:22:13

标签: android

我正在使用mediaplayer开发一个应用程序。我已经处理了两种布局的屏幕方向。我使用了onsavedInstancestate和onrestoreinstancesstate。在屏幕旋转时,布局会更改,并且会保留媒体播放器状态,但UI不响应。

我保存并保留了媒体播放器对象的状态

   public  Object  onRetainNonConfigurationInstance() 
         {
                HashMap<String,Object> player = new HashMap<String,Object>();
                MediaPlayer instance = mp;
                mp = null;
                MediaPlayer instance1 = mp1;
                mp1 = null;
                player.put("mp", instance);
                player.put("mp1", instance1);
                return player;

          }

 if(getLastNonConfigurationInstance()!=null)
                {

                 playerhandle = (HashMap<String, Object>) getLastNonConfigurationInstance();
                 mp = (MediaPlayer)playerhandle.get("mp");
                 if (mp == null) 
                 {
                    mp = new MediaPlayer();
                 }
                 mp1 = (MediaPlayer)playerhandle.get("mp1");
                 if (mp1 == null) 
                 {
                   mp1 = new MediaPlayer();
                 }
                 }        

并且还使用onsavedinstancestate和onrestoreinstancestate保留数据。媒体播放器在屏幕方向后保留状态(音频在屏幕方向上播放没有解释)但在方向更改后UI没有响应。无法弄清楚问题.....

1 个答案:

答案 0 :(得分:0)

如果要将onCreate中的单击侦听器添加到按钮,则需要将侦听器添加到onConfigurationChanged中创建的新按钮对象。

您可以考虑在XML文件中使用android:onClick属性,而不是在代码中设置单击侦听器。这是避免这个问题的好方法。

要从XML使用android:onClick,请执行以下操作:

<Button
    android:id="@+id/addnote"
    android:onClick="addNoteMethod"
    ....
    />

然后在您的活动中,定义方法:

public void addNoteMethod(View view) {
    createNote();
}

android:onClick方法的名称完全是任意的;它只需要将活动中的方法与正确的签名匹配(void(View))。当单击的方式与为OnClickListener调用onClick方法的方式完全相同时,将调用该方法。

当使用android:onClick时,你不需要调用setOnClickListener(甚至可以在o​​nCreate中检索对按钮的引用,除非你需要它用于其他东西)。