我的程序有一个奇怪的问题,我无法解释,到目前为止我还没有找到解决方案。我有一个简单的活动,可以在片段之间切换,并通过应用程序的初始设置运行用户。第一个片段只是顶部的文本视图,底部有一个按钮,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>
这是我实现onClickListener
的片段代码public class SetupFragmentInitialScreen extends SherlockFragment
{
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState)
{
View parentView = null;
parentView = inflater.inflate(R.layout.setup_fragment_initial_screen,
container,
false);
Button nextButton = (Button)parentView.findViewById(R.id.next_button);
nextButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Log.v("ButtonPressed", "You Pressed the button!");
((InitialActivity)getActivity()).onInitialScreenNextPress();
}
});
return parentView;
}
}
最后,到目前为止,这是我的活动代码
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本身不是。我也尝试加载另一个有一对单选按钮的界面,它们也没有反应。在初始化片段时,我有什么问题吗?
答案 0 :(得分:0)
不幸的是,您发布的所有代码似乎都没有指出问题所在。
按钮不需要onClick侦听器,以便在按下时更改颜色,因此我不担心该部分。更重要的是:
答案 1 :(得分:0)
我弄清楚它是什么。无论出于何种原因,当将第一个片段加载到活动中时,程序不喜欢我尝试淡入淡出动画。我从onCreate()方法中删除了该行,现在工作正常。