Android layout Android片段接口无响应

Android layout Android片段接口无响应,android-layout,android-fragments,actionbarsherlock,Android Layout,Android Fragments,Actionbarsherlock,我的程序有一个奇怪的问题,我无法解释,到目前为止我还没有找到解决办法。我有一个简单的活动,可以在片段之间切换,让用户完成应用程序的初始设置。第一个片段在顶部只是一个文本视图,底部有一个按钮,设置了onClickListener来调用父活动的方法,但是在测试中,当我单击按钮时,什么也没有发生。它不会像普通按钮那样改变颜色,而且似乎没有注册任何单击 以下是布局的XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout x

我的程序有一个奇怪的问题,我无法解释,到目前为止我还没有找到解决办法。我有一个简单的活动,可以在片段之间切换,让用户完成应用程序的初始设置。第一个片段在顶部只是一个文本视图,底部有一个按钮,设置了onClickListener来调用父活动的方法,但是在测试中,当我单击按钮时,什么也没有发生。它不会像普通按钮那样改变颜色,而且似乎没有注册任何单击

以下是布局的XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:text="@string/setup_intro" />

<Button
    android:id="@+id/next_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:clickable="true"
    android:width="72dp"
    android:text="@string/next_button" />

</RelativeLayout>
最后,这是我迄今为止的活动代码

public class InitialActivity extends SherlockFragmentActivity
{
    private SetupFragmentInitialScreen initialScreen;
    private SetupFragmentPreferenceOneScreen preferenceOneScreen;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {    
        super.onCreate(savedInstanceState);

        initialScreen = new SetupFragmentInitialScreen();
        preferenceOneScreen = new SetupFragmentPreferenceOneScreen();

        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = 
            fragmentManager.beginTransaction();

        fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, 
                                                android.R.anim.fade_out);

        fragmentTransaction.replace(android.R.id.content, 
                                    initialScreen);

        fragmentTransaction.commit();
    }

    public void onInitialScreenNextPress()
    {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = 
            fragmentManager.beginTransaction();

        fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, 
                                                android.R.anim.fade_out);

        fragmentTransaction.replace(android.R.id.content, 
                                    preferenceOneScreen);

        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
    }
}
到目前为止,代码对我来说似乎是正确的,但正如我所说的,当我尝试按下按钮时,界面没有反应

编辑:我已将以下代码添加到我的活动中,以检查触摸事件

@Override
public boolean onTouchEvent(MotionEvent event)
{
    super.onTouchEvent(event);

    Log.v("Touch Detected", "You are touching the screen.");

    return false;
}

它会在屏幕上记录所有事件,除了我触摸按钮时,因此活动会接收触摸事件,但UI本身不会。我还尝试加载另一个界面,它有一对单选按钮,它们也没有响应。初始化片段有什么问题吗?

不幸的是,您发布的代码似乎都没有指出问题所在

按钮不需要onClick侦听器来更改按下时的颜色,所以我不会担心这一部分。更重要的是:

  • 是否可能有任何透明视图位于按钮顶部并点击?DDMS有一个“UI自动机的转储视图层次结构”按钮,可以帮助您检查这一点
  • 您的活动是否覆盖dispatchTouchEvent()、onInterceptTouchEvent()或相关API,其中之一是否会阻止触摸到达按钮
  • 如果要对按钮应用自定义主题,是否有针对按下状态的单独视觉效果

    • 我弄明白了那是什么。无论出于何种原因,程序不喜欢我在将第一个片段加载到活动中时尝试淡出淡入动画。我从onCreate()方法中删除了这一行,现在可以正常工作了。

      不应该有任何透明视图,布局正是我在上面发布的,在一个相对布局中只有两个视图,我没有用任何特殊的东西来膨胀,只是调用replace android.R.id.content的片段事务。同样,除了include之外,没有覆盖,我已经提供了我所有的活动代码,并且没有涉及自定义主题,所有内容都是库存的。
      @Override
      public boolean onTouchEvent(MotionEvent event)
      {
          super.onTouchEvent(event);
      
          Log.v("Touch Detected", "You are touching the screen.");
      
          return false;
      }