2

已编辑;

我的应用程序在 android 模拟器中运行良好。现在我已经在“Bluestacks”中安装了 .apk,这是一个用于在您的 PC 和 android-x86 VM 上运行 android 应用程序的客户端。当我按下按钮进入下一个活动时,无论是崩溃还是重启。

在确保只显示主活动的已安装图标后,我启动应用程序,一旦按下一个链接到下一个活动的意图的按钮,主活动就会在 bluestacks 中重新启动,并在 VM 中出现崩溃错误.

此行为未显示在 android 模拟器上。这可能是什么原因?

安卓清单:

....
<application
    android:name="MainApplication"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".activities.MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".activities.NewAuditActivity"
        android:label="@string/title_activity_index" >
       <intent-filter>
           <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
....

在主要活动中,我这样做;

public void viewNewAudits(View view) {

    Intent intent = new Intent(this, NewAuditActivity.class);
    TextView auditorView = (TextView) findViewById(R.id.MainViewAuditor);
    intent.putExtra("auditor", auditorView.getText());
    startActivity(intent);
}

在 xml 视图中单击的按钮正确调用了 onclick:"viewNewAudits" 方法。

应用程序不继续下一个活动的原因可能是什么?当 android 模拟器运行应用程序时,我无法找出崩溃的原因可能是什么错误/异常。

编辑:

我在 VBox VM 上搜索日志让我使用 adb logcat 命令进行了一些实验。我从 VM 中找到了一些日志,它给出了 SQLite 异常。这是有道理的,因为在第二个活动中我开始实例化我的数据库和查询管理器。奇怪的是,sqliteexception 是一个语法错误。有什么方法可以使 SQLite 语法在另一个模拟器上有所不同?一小段 logcat 日志:

I/ActivityManager( 2039): Starting activity: Intent { cmp=..../.activ
ities.NewAuditActivity (has extras) }
I/Database( 2797): sqlite returned: error code = 1, msg = near ",": syntax error

D/AndroidRuntime( 2797): Shutting down VM
W/dalvikvm( 2797): threadid=1: thread exiting with uncaught exception (group=0xb
5891290)
E/AndroidRuntime( 2797): FATAL EXCEPTION: main
E/AndroidRuntime( 2797): java.lang.RuntimeException: Unable to start activity Co
mponentInfo{.....activities.NewAuditActivity}: androi
d.database.sqlite.SQLiteException: near ",": syntax error: , while compiling: IN
SERT INTO Criteria (auditTemplateId, code, requirement, MOE, description) VALUES
('145', '.A.25(a)', 'Facility, size and segregation', '1.8-2.7 exhibit 5-2.3', ...... *more of the same inserts with a lot of comma's
4

2 回答 2

1

我建议您在 android 模拟器或真实设备上使用您的应用程序.. 否则您最终会花时间在第三方工具的错误上.. 如果它在模拟器上运行良好,那么您正在使用的 Bluestacks 客户端中可能存在错误...在真机上试...

当您没有适合每个开发人员的设备时,模拟器会很有帮助。模拟器可用于检查基本 UI 和应用程序的流程。

应使用真实设备来检查像素完美 UI、性能、基于位置的功能、基于网络连接的功能。ETC..

因此,在每次发布功能之前在真实设备上进行测试非常重要。

EDIT1:以下链接也对模拟器与真实设备进行了非常有趣的讨论:

Android 模拟器与真实设备

EDIT2:在 NewAuditActivity 类中,如果auditorin的intent extra值为nullor ,您是否处理这种情况empty string

于 2012-11-15T08:08:57.887 回答
0

..叹息..

似乎另一个模拟器包含稍旧版本的 android,它对代码没有影响,但使用了稍旧版本的 SQLite DB。当我试图用复合插入查询填充数据库时,这导致了一个错误。这使我的问题与此处的问题相同:插入时出现 SQLite 错误

附加信息:此视频非常清楚地展示了如何在 virtualbox 上设置 android-x86 项目作为现有模拟器的替代方案:http ://www.youtube.com/watch?v=fFCan01I6QQ

为了能够检查此设备的日志,您可以使用视频中所示的 adb,但这次您使用的是:'adb -s < Emulator serial number > logcat'。这会将完整的 logcat 日志打印到命令行。

至于蓝叠。这个客户端没有显示任何类型的错误,它只是完美地重置了应用程序,没有任何通知。使用此软件时可能需要牢记这一点。

于 2012-11-16T10:31:48.667 回答