【问题标题】:ActionBarActivity catch an error on PhoneActionBarActivity 在电话上捕获错误
【发布时间】:2013-07-27 11:29:46
【问题描述】:

** 我被推荐使用 ActionBar Activity** 这是之前的代码

import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;


public class MainActivity extends Activity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 

    }

我写了新的应用程序并听从了建议。

import android.os.Bundle;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.ActionBarActivity;


    public class MainActivity extends ActionBarActivity {

          @Override
          public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ActionBar actionBar =getSupportActionBar();
            actionBar.setDisplayHomeAsUpEnabled(true);

            setContentView(R.layout.activity_main);
          }

          @Override
          public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
          }

        }

如果我使用 ACtionBarActivity 而不是 Activity
当我尝试运行它时,我在手机上收到一条错误消息。
请告诉我我做错了什么

来自 Logcat 的信息

    07-27 15:14:19.942: I/Process(21715): Sending signal. PID: 21715 SIG: 9
07-27 15:34:38.521: W/dalvikvm(23579): Unable to resolve superclass of Lcom/example/project/MainActivity; (532)
07-27 15:34:38.521: W/dalvikvm(23579): Link of class 'Lcom/example/project/MainActivity;' failed
07-27 15:34:38.521: D/AndroidRuntime(23579): Shutting down VM
07-27 15:34:38.521: W/dalvikvm(23579): threadid=1: thread exiting with uncaught exception (group=0x40ae5210)
07-27 15:34:38.521: E/AndroidRuntime(23579): FATAL EXCEPTION: main
07-27 15:34:38.521: E/AndroidRuntime(23579): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.project/com.example.project.MainActivity}: java.lang.ClassNotFoundException: com.example.project.MainActivity
07-27 15:34:38.521: E/AndroidRuntime(23579):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at android.os.Looper.loop(Looper.java:137)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at android.app.ActivityThread.main(ActivityThread.java:4441)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at java.lang.reflect.Method.invokeNative(Native Method)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at java.lang.reflect.Method.invoke(Method.java:511)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at dalvik.system.NativeStart.main(Native Method)
07-27 15:34:38.521: E/AndroidRuntime(23579): Caused by: java.lang.ClassNotFoundException: com.example.project.MainActivity
07-27 15:34:38.521: E/AndroidRuntime(23579):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
07-27 15:34:38.521: E/AndroidRuntime(23579):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882)
07-27 15:34:38.521: E/AndroidRuntime(23579):    ... 11 more
07-27 15:34:38.531: I/Process(23579): Sending signal. PID: 23579 SIG: 9

编辑和导出屏幕截图 http://i.stack.imgur.com/MNfc1.jpg

1-7的截图

http://i.stack.imgur.com/NTpP3.jpg

【问题讨论】:

  • 请从 LogCat 发布您的堆栈跟踪。
  • 我发布了这个信息。
  • 我添加了一个答案。让我知道它是否有效。
  • 我添加了 Order and Export 和 Projects 的截图

标签: android android-actionbar android-support-library android-actionbar-compat


【解决方案1】:

在我的应用程序项目中将“Android Private Libraries”和“Android Dependencies”移动到 Order and Export 列表的顶部后,我已经成功了。 此外,我在此列表中没有 android-support-v7-appcompat。 在 android-support-v7-appcompat 项目中,我在 Order and Export 列表中没有支持 jar,但是选中了“Android Private Libraries”。 请同时查看以下链接:

Setting up ActionBarCompat support library in Eclipse

Implementing Action Bar using ActionBarCompat support library in Android

【讨论】:

  • 非常感谢,但我下载了 Android Studio。并且添加的一行迫使我的项目工作。
  • 你的指导帮助我使用 Eclipse
  • 将 android 私有库与 android 依赖项一起移动到顶部并将它们移动到构建路径中的列表顶部对我来说是诀窍。谢谢
【解决方案2】:

确保将支持库添加到项目并导出。您可以在 Eclipse 中通过查看项目属性、单击Java Build Path,然后单击Order and Export 选项卡来执行此操作。然后确保选中Android Private Libraries

您是否按照以下步骤操作:http://developer.android.com/tools/support-library/setup.html#

【讨论】:

  • 我添加了 Order and Export 和 Projects 的截图。
  • 您是否按照我链接到我的答案的页面中的步骤进行操作?
  • 当然可以,但是我在第二部分的第二段中不确定。我是这样做的 - i.stack.imgur.com/uBCqz.jpg i.stack.imgur.com/5qSs4.jpg
  • 你关注Adding libraries with resources了吗?
  • 在库窗格中,单击添加。 i.stack.imgur.com/uBCqz.jpg i.stack.imgur.com/5qSs4.jpg
【解决方案3】:

与您在 Android Studio 中的堆栈跟踪完全相同。我认为这是由于 Android 无法为 ActionBarActivity 找到合适的主题造成的。

不管怎样,我就是这样解决的:

将以下内容添加到 AndroidManifest.xml 中的 MainActivity:

android:theme="@style/Theme.AppCompat.Light"

如果它现在可以工作 - 太好了!如果 Android Studio 找不到主题: 复制文件

sdk/extras/android/support/v7/appcompat/res/values/themes.xml
sdk/extras/android/support/v7/appcompat/res/values/themes_base.xml

到项目中的 res/values/ 文件夹。

【讨论】:

  • 复制这两个 .xml 文件会导致一百多个错误。
猜你喜欢
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 2022-06-21
  • 2017-10-15
  • 2012-05-10
  • 1970-01-01
相关资源
最近更新 更多