Android onClick在转换后不起作用
我正在努力学习简单的TransitionManager工作,但我有点被卡住了 我的目标是通过点击图片在两个场景之间切换。但在第一次图像点击和第一次场景更改后,我无法捕捉图像点击 这是我的片段代码:Android onClick在转换后不起作用,android,onclick,android-4.4-kitkat,android-transitions,Android,Onclick,Android 4.4 Kitkat,Android Transitions,我正在努力学习简单的TransitionManager工作,但我有点被卡住了 我的目标是通过点击图片在两个场景之间切换。但在第一次图像点击和第一次场景更改后,我无法捕捉图像点击 这是我的片段代码: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ViewGroup sceneRoot = (ViewGroup)rootView.findViewById(R.id.relative);
final Transition transition = new ChangeBounds();
transition.setDuration(3000);
final Scene scene1 = Scene.getSceneForLayout(sceneRoot, R.layout.scene1, getActivity());
final Scene scene2 = Scene.getSceneForLayout(sceneRoot, R.layout.scene2, getActivity());
ImageView image = (ImageView)rootView.findViewById(R.id.image);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!testBoo){
TransitionManager.go(scene2, transition);
testBoo = true;
} else {
testBoo = false;
TransitionManager.go(scene1, transition);
}
}
});
return rootView;
}
片段xml:
<RelativeLayout
android:id="@+id/relative"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:showIn="@layout/activity_main"
tools:context=".MainActivityFragment">
<include
layout="@layout/scene1"
/>
</RelativeLayout>
场景1 xml:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/text"
android:text="Hello World!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/image"
android:layout_margin="5dp"
/>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_alignParentTop="true"
/>
</RelativeLayout>
场景2 xml:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/text"
android:text="Hello World!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:layout_alignParentBottom="true"
android:layout_toStartOf="@id/image"
/>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
你知道我哪里出错了吗?有趣的是(尽管几乎所有教程都是一样的),当我更改容器ID时,它开始工作了。您也可以尝试相同的方法来查看它是否工作。您需要再次设置onClickListeners以使其工作 在onCreateView中,可以直接调用setListeners方法
private void setListeners() {
findViewById(R.id.thirdText).setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(final View v) {
final Scene scene3 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),
R.layout.scene_3, MainActivity.this);
Transition mFadeTransition = new ChangeBounds();
TransitionManager.go(scene3, mFadeTransition);
setListeners();
}
});
findViewById(R.id.firsttext).setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(final View v) {
final Scene scene1 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),
R.layout.activity_main, MainActivity.this);
Transition mFadeTransition = new ChangeBounds();
TransitionManager.go(scene1,mFadeTransition);
setListeners();
}
});
findViewById(R.id.secondText).setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(final View v) {
final Scene scene2 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),
R.layout.scene_2, MainActivity.this);
Transition mFadeTransition = new ChangeBounds();
TransitionManager.go(scene2, mFadeTransition);
setListeners();
}
});
}
找到答案了吗?现在呢?我有同样的问题(哪些容器(什么容器)?