Java 图像视图和意图

Java 图像视图和意图,java,android,eclipse,listview,android-intent,Java,Android,Eclipse,Listview,Android Intent,所以我尝试在点击一个图像时启动一个新活动,该图像将在全屏显示的情况下启动一个新活动。为此,我编写了以下代码: XML文件中定义的ImageView: <ImageView android:id="@+id/sun" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/sun_title" and

所以我尝试在点击一个图像时启动一个新活动,该图像将在全屏显示的情况下启动一个新活动。为此,我编写了以下代码:

XML文件中定义的ImageView:

<ImageView
     android:id="@+id/sun"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_below="@+id/sun_title"
     android:layout_centerHorizontal="true"
     android:contentDescription="@string/sun_image"
     android:src="@drawable/sun" />
下面的代码没有错误,但当我运行应用程序并点击图像时,应用程序会因nullPointerException崩溃。以下是这方面的日志:

02-25 16:55:43.201: E/AndroidRuntime(3459): FATAL EXCEPTION: main
02-25 16:55:43.201: E/AndroidRuntime(3459): Process: com.andrewq.planets, PID: 3459
02-25 16:55:43.201: E/AndroidRuntime(3459): java.lang.NullPointerException
02-25 16:55:43.201: E/AndroidRuntime(3459):     at android.content.ComponentName.<init>(ComponentName.java:77)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at android.content.Intent.<init>(Intent.java:3821)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at com.andrewq.planets.FragmentA$2.onClick(FragmentA.java:43)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at android.view.View.performClick(View.java:4438)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at android.view.View$PerformClick.run(View.java:18422)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at android.os.Handler.handleCallback(Handler.java:733)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at android.os.Handler.dispatchMessage(Handler.java:95)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at android.os.Looper.loop(Looper.java:136)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at android.app.ActivityThread.main(ActivityThread.java:5017)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at java.lang.reflect.Method.invokeNative(Native Method)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at java.lang.reflect.Method.invoke(Method.java:515)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-25 16:55:43.201: E/AndroidRuntime(3459):     at dalvik.system.NativeStart.main(Native Method)
02-25 16:55:43.201:E/AndroidRuntime(3459):致命异常:main
02-25 16:55:43.201:E/AndroidRuntime(3459):进程:com.andrewq.planets,PID:3459
02-25 16:55:43.201:E/AndroidRuntime(3459):java.lang.NullPointerException
02-25 16:55:43.201:E/AndroidRuntime(3459):位于android.content.ComponentName.(ComponentName.java:77)
02-25 16:55:43.201:E/AndroidRuntime(3459):在android.content.Intent.(Intent.java:3821)
02-25 16:55:43.201:E/AndroidRuntime(3459):在com.andrewq.planets.FragmentA$2.onClick(FragmentA.java:43)
02-25 16:55:43.201:E/AndroidRuntime(3459):在android.view.view.performClick(view.java:4438)
02-25 16:55:43.201:E/AndroidRuntime(3459):在android.view.view$PerformClick.run(view.java:18422)
02-25 16:55:43.201:E/AndroidRuntime(3459):在android.os.Handler.handleCallback(Handler.java:733)上
02-25 16:55:43.201:E/AndroidRuntime(3459):在android.os.Handler.dispatchMessage(Handler.java:95)上
02-25 16:55:43.201:E/AndroidRuntime(3459):在android.os.Looper.loop(Looper.java:136)
02-25 16:55:43.201:E/AndroidRuntime(3459):位于android.app.ActivityThread.main(ActivityThread.java:5017)
02-25 16:55:43.201:E/AndroidRuntime(3459):位于java.lang.reflect.Method.Invokenactive(本机方法)
02-25 16:55:43.201:E/AndroidRuntime(3459):位于java.lang.reflect.Method.invoke(Method.java:515)
02-25 16:55:43.201:E/AndroidRuntime(3459):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-25 16:55:43.201:E/AndroidRuntime(3459):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-25 16:55:43.201:E/AndroidRuntime(3459):在dalvik.system.NativeStart.main(本机方法)
希望这是一个答案足够的信息

提前感谢:)


编辑:我没有为图像创建其他活动,因此出于测试目的,我让它打开我的首选项活动。

您的
classContext
null
。如果此代码在
活动中
则创建
意图
类似

Intent i = new Intent(this, Settings.class);

如果它来自其他类,请确保将有效的
上下文
传递给该类,并在代码中使用它而不是
classContext

您的
classContext
null
。如果此代码在
活动中
则创建
意图
类似

Intent i = new Intent(this, Settings.class);
如果它来自其他类,那么请确保将有效的
上下文
传递给该类,并在代码中使用它,而不是
类上下文

您有

final Context classContext = null;
所以
classContext
null
。由于它看起来像是一个
片段
,请尝试

Intent i = new Intent(getActivity(), Settings.class);
你有

final Context classContext = null;
所以
classContext
null
。由于它看起来像是一个
片段
,请尝试

Intent i = new Intent(getActivity(), Settings.class);


如果你试着用这个。。。意图i=新意图(ActualClass.this、Settings.class)@geekCode-这给了我一个错误。它说actualClass无法解析为类型。只需用类的名称替换actualClass,第二个参数必须是下一个类。。。关于星体触觉(i);加上这个。。。实际类。此。星触觉(i);同样,只需将actualClass替换为您的class@geekCode现在它说:构造函数意图(FragmentA,Class)没有以Eclipse错误的形式定义;代码中的行…??如果您尝试使用此。。。意图i=新意图(ActualClass.this、Settings.class)@geekCode-这给了我一个错误。它说actualClass无法解析为类型。只需用类的名称替换actualClass,第二个参数必须是下一个类。。。关于星体触觉(i);加上这个。。。实际类。此。星触觉(i);同样,只需将actualClass替换为您的class@geekCode现在它说:构造函数意图(FragmentA,Class)没有以Eclipse错误的形式定义;代码行…???更好的startActivity(新的意图(getActivity(),Settings.class));1行中的所有内容:-)@LuisAlberto是的,这也应该有效。但我不确定它是否“更好”。我喜欢将它们分开,以防需要添加
额外的
s(等),另外我更喜欢可读性。但这只是偏好。是的,但一行中的所有内容都保持代码整洁,如果你想设置参数或设置意图的某些属性,你是对的。不可能像我这样做。@LuisAlberto它确实将所有内容保持在一行中。这就是为什么我说这是德夫的偏好。我喜欢将它们分开,但我同意这是可行的,而且只是另一种方法;1行中的所有内容:-)@LuisAlberto是的,这也应该有效。但我不确定它是否“更好”。我喜欢将它们分开,以防需要添加
额外的
s(等),另外我更喜欢可读性。但这只是偏好。是的,但一行中的所有内容都保持代码整洁,如果你想设置参数或设置意图的某些属性,你是对的。不可能像我这样做。@LuisAlberto它确实将所有内容保持在一行中。这就是为什么我说这是德夫的偏好。我喜欢将它们分开,但我同意这会起作用,而且只是另一种方式。谢谢你的回答…我选择codeMagic的作为最佳答案,因为他在编辑你的答案之前很容易理解。但你们都是对的。谢谢你们的回答……我选择了codeMagic的作为最佳答案,因为他在编辑你们的答案之前很容易理解