我正在尝试使用转换框架将一个场景更改为另一个场景。
MainActivity.java
mSceneRoot = (ViewGroup) findViewById(R.id.root_scene);
calendarScene = Scene.getSceneForLayout(mSceneRoot, R.layout.content_main_scene1,this);
searchScene = Scene.getSceneForLayout(mSceneRoot, R.layout.content_main_scene2,this);
searchTextView = (TextView) findViewById(R.id.searchTextEdit);
searchTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
TransitionManager.go(searchScene);
} else
{
TransitionManager.go(calendarScene);
}
}
});
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" 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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main" tools:context=".MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/root_scene">
<include layout="@layout/content_main_scene1"/>
</FrameLayout>
</RelativeLayout>
content_main_scene2
还有listView
。
最后我得到了例外:
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/InputEventReceiver: Exception dispatching input event.
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: java.lang.NullPointerException
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2413)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.requestFocus(ViewGroup.java:2373)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.requestFocus(View.java:6945)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.requestFocus(View.java:6924)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.rootViewRequestFocus(View.java:4746)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.removeAllViewsInLayout(ViewGroup.java:4042)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.removeAllViews(ViewGroup.java:3971)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.transition.Scene.enter(Scene.java:163)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.transition.TransitionManager.changeScene(TransitionManager.java:193)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.transition.TransitionManager.go(TransitionManager.java:342)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at com.freelance.wwtlf.info.MainActivity$2.onFocusChange(MainActivity.java:71)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.onFocusChanged(View.java:4836)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.widget.TextView.onFocusChanged(TextView.java:7641)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.handleFocusGainInternal(View.java:4617)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.requestFocusNoSearch(View.java:6999)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.requestFocus(View.java:6978)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.requestFocus(View.java:6945)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.requestFocus(View.java:6924)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.onTouchEvent(View.java:8653)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.widget.TextView.onTouchEvent(TextView.java:7693)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.View.dispatchTouchEvent(View.java:7706)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/MessageQueue-JNI: at
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info D/AndroidRuntime: Shutting down VM
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa4d17b20)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: FATAL EXCEPTION: main
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: Process: com.freelance.wwtlf.info, PID: 5937
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: java.lang.NullPointerException
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2413)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.requestFocus(ViewGroup.java:2370)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2414)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.requestFocus(ViewGroup.java:2373)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.View.requestFocus(View.java:6945)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.View.requestFocus(View.java:6924)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.View.rootViewRequestFocus(View.java:4746)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.removeAllViewsInLayout(ViewGroup.java:4042)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.view.ViewGroup.removeAllViews(ViewGroup.java:3971)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.transition.Scene.enter(Scene.java:163)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.transition.TransitionManager.changeScene(TransitionManager.java:193)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at android.transition.TransitionManager.go(TransitionManager.java:342)
11-06 03:14:13.848 5937-5937/com.freelance.wwtlf.info E/AndroidRuntime: at com.freelance.wwtlf.info.MainActivity$2.onFocusChange(MainActivity.java:71)
...
哪个对象指向null
?
更新:
当我将OnFocusChangeListener
更改为onClickListener
时,一切正常。但我仍然不明白为什么......