【问题标题】:Starting a new activity开始一项新活动
【发布时间】:2011-03-31 07:54:24
【问题描述】:

总的来说,我对编程比较陌生,所以要温柔=|我正在尝试从显示几个文本输入、一个复选框和一个按钮的基本活动开始一个新活动。按下按钮时,我希望它切换到新活动。代码可以编译,但是当我按下 Android 中的按钮时,它就会崩溃。任何帮助将不胜感激。

这是代码示例:

public class Something extends Activity implements OnClickListener
{

   @Override
   public void onCreate(Bundle savedInstanceState) 
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.login);

       Button login = (Button)findViewById(R.id.login);
       login.setOnClickListener(this);

   }

   @Override
   public void onClick(View v) 
   {

       startActivity(new Intent().setClass(Something.this, That.class));
   }
}

错误日志:

I/ActivityManager(240):开始活动:Intent { cmp=jano.huerta.sfgc/.HOME } D/AndroidRuntime(13612): 关机 VM W/dalvikvm(13612):threadid=1:线程以未捕获的方式退出 异常(组=0x4 0025a08)E/AndroidRuntime(13612):致命 例外:主 E/AndroidRuntime(13612):java.lang.RuntimeException: 无法开始活动公司 mponentInfo{jano.huerta.sfgc/jano.huerta.sfgc.HOME}: android.content.ActivityNot FoundException:找不到显式 活动类{jano.huerta.sfgc/jano.huerta.sfgc.SUMMARY};你 在你的 AndroidManifest.xml 中声明了这个活动?

E/AndroidRuntime(13612): 在 android.app.ActivityThread.performLaunchActiv ity(ActivityThread.java:2787) E/AndroidRuntime(13612): 在 android.app.ActivityThread.handleLaunchActivi ty(ActivityThread.java:2803) E/AndroidRuntime(13612): 在 android.app.ActivityThread.access$2300(ActivityThread.java:135) E/AndroidRuntime(13612):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136) E/AndroidRuntime(13612):在 android.os.Handler.dispatchMessage(Handler.ja va:99) E/AndroidRuntime(13612):在 android.os.Looper.loop(Looper.java:144) E/AndroidRuntime(13612):
在 android.app.ActivityThread.main(ActivityThread d.java:4937) E/AndroidRuntime(13612):在 java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(13612):在 java.lang.reflect.Method.invoke(Method.java:5 21) E/AndroidRuntime(13612):在 com.android.internal.os.ZygoteInit$MethodAndA rgsCaller.run(ZygoteInit.java:868) E/AndroidRuntime(13612): 在 com.android.internal.os.ZygoteInit.main(Zygot eInit.java:626) E/AndroidRuntime(13612):在 dalvik.system.NativeStart.main(Native Method)

E/AndroidRuntime(13612):由以下原因引起: android.content.ActivityNotFoundException:无法找到显式 活动类 {jano.huerta.sfgc/jano.huerta.sfgc.SUMMARY };你 在您的 AndroidManifest.xml 中声明此活动? E/AndroidRuntime(13612):在 android.app.Instrumentation.checkStartActivit yResult(Instrumentation.java:1563) E/AndroidRuntime(13612): 在 android.app.ActivityThread.resolveActivityInf o(ActivityThread.java:2597) E/AndroidRuntime(13612): 在 android.app.LocalActivityManager.startActivit y(LocalActivityManager.java:277) E/AndroidRuntime(13612): 在 android.widget.TabHost$IntentContentStrategy。 getContentView(TabHost.java:651) E/AndroidRuntime(13612): 在 android.widget.TabHost.setCurrentTab(TabHost.java:323) E/AndroidRuntime(13612):在 android.widget.TabHost.addTab(TabHost.java:21 3) E/AndroidRuntime(13612):在 jano.huerta.sfgc.HOME.onCreate(HOME.java:23) E/AndroidRuntime(13612): 在 android.app.Instrumentation.callActivityOnCre ate(Instrumentation.java:1069) E/AndroidRuntime(13612): 在 android.app.ActivityThread.performLaunchActiv ity(ActivityThread.java:2751) E/AndroidRuntime(13612): ... 11 更多 W/ActivityManager(240):强制完成活动 jano.huerta.sfgc/.HOME W/ActivityManager(240):强制完成 活动 jano.huerta.sfgc/.SFGC W/ActivityManager(240):活动 HistoryRecord 的暂停超时{466bbec0 jano .huerta.sfgc/.HOME} D/dalvikvm(406):GC_EXPLICIT 在 90 毫秒内释放了 418 个对象/26008 个字节 I/Process (13612):发送信号。 PID:13612 SIG:9 I/ActivityManager(240): 进程 jano.huerta.sfgc (pid 13612) 有 死了。 I/WindowManager(240):赢得死亡:窗口{466cb800 jano.huerta.sfgc/jano.huerta。 sfgc.SFGC 暂停=真} W/ActivityManager(240):活动销毁超时 历史记录{46654450 ja no.huerta.sfgc/.SFGC}

【问题讨论】:

  • 向我们提供崩溃的详细信息

标签: android android-activity


【解决方案1】:

永远不要忘记在 Manifest.xml 中添加 <activity> 标签。

所有活动必须添加到清单文件中。 Android Activity 是一个必不可少的 Android 组件,应该注册。

为什么?

Activity 由 Android OS 启动和销毁。所以当你打电话时,

Intent i = new Intent(this, TargetActivity.class);
startActicvity(i);

然后操作系统在Manifest.xml 文件中查找活动。如果它没有找到匹配的活动,那么您将收到以下错误:

android.content.ActivityNot FoundException:无法找到显式 活动

如何在 Manifest 文件中添加活动?

将此添加到清单文件中。

<activity android:name=".TargetActivity"/>

这是最基本的形式。你可以探索更多HERE

【讨论】:

    【解决方案2】:

    这里最常见的错误是忘记在您的 AndroidManifest.xml 中注册“That”活动。你做到了吗?

    此外,如果您粘贴崩溃时的堆栈跟踪信息,对您的帮助会容易得多。您可以通过运行adb logcat 来查看崩溃信息以及其他日志记录。

    【讨论】:

    • 我已经使用与“Something”相同的意图过滤器注册了“THAT”活动,但仍然崩溃。不确定如何获取堆栈跟踪。我在 Eclipse 中运行了调试器,但我仍在弄清楚如何理解它。编辑:我想我弄清楚了堆栈跟踪,将编辑问题。
    • 那个堆栈跟踪看起来不完整,因为我没有看到任何看起来像你的代码的东西。通常在日志中,您会看到一个类似的堆栈跟踪,然后是一个较小的堆栈跟踪,该堆栈跟踪主要限于您的代码。这只讲述了故事的一半。不确定这是 eclipse 的错还是你的错,但 adb logcat 确实是最简单的方法。
    • 好的,我不确定是否可以在 Eclipse 中发送 logcat 命令,所以我打开了一个 cmd shell 并从那里获取日志。我希望它正确出现,我可以看到它确实有与我相关的代码。感谢您的帮助。
    • @Alejandro,总结活动是什么?你是为了我们的利益而在这里改变它吗?
    • 嗯...我发现了问题所在。我正是你之前在清单中提到的。我忘记为 tabHost 添加摘要活动。啊,我觉得...慢大声笑。非常感谢,logcat 帮我弄清楚了,现在我知道得更多了。再次感谢。 @st0le 这不是我正在使用的 tabHost 的实际活动,但显然我忘了添加那个。问题已解决=D
    猜你喜欢
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多