0

SQLite テーブルの列から値を取得して配列に格納しようとしています。ボタンをクリックして、別のアクティビティからそのアクティビティを開始する必要があります。しかし残念ながら、そのボタンをクリックすると KeyDisplatchTimedOut エラーが発生し、アプリケーションが予期せず停止しました。

これは私のログキャットです -

09-21 01:35:54.379: E/ActivityManager(1226): ANR in com.example.fromstart (com.example.fromstart/.Dialog)
09-21 01:35:54.379: E/ActivityManager(1226): Reason: keyDispatchingTimedOut
09-21 01:35:54.379: E/ActivityManager(1226): Load: 0.79 / 0.61 / 0.6
09-21 01:35:54.379: E/ActivityManager(1226): CPU usage from 5274ms to 0ms ago:
09-21 01:35:54.379: E/ActivityManager(1226):   94% 18598/com.example.fromstart: 93% user + 1.3% kernel
09-21 01:35:54.379: E/ActivityManager(1226):   1.8% 961/adbd: 0.1% user + 1.7% kernel / faults: 491 minor
09-21 01:35:54.379: E/ActivityManager(1226):   1.5% 951/surfaceflinger: 0.3% user + 1.1% kernel
09-21 01:35:54.379: E/ActivityManager(1226):   0.5% 1226/system_server: 0.1% user + 0.3% kernel / faults: 8 minor
09-21 01:35:54.379: E/ActivityManager(1226):   0% 943/yaffs-bg-1: 0% user + 0% kernel
09-21 01:35:54.379: E/ActivityManager(1226): 100% TOTAL: 94% user + 3.7% kernel + 1.3% softirq
09-21 01:35:54.379: E/ActivityManager(1226): CPU usage from 684ms to 1225ms later:
09-21 01:35:54.379: E/ActivityManager(1226):   96% 18598/com.example.fromstart: 96% user + 0% kernel
09-21 01:35:54.379: E/ActivityManager(1226):     96% 18598/ample.fromstart: 96% user + 0% kernel
09-21 01:35:54.379: E/ActivityManager(1226):   3.7% 1226/system_server: 0% user + 3.7% kernel
09-21 01:35:54.379: E/ActivityManager(1226):     3.7% 1243/ActivityManager: 0% user + 3.7% kernel
09-21 01:35:54.379: E/ActivityManager(1226): 100% TOTAL: 94% user + 5.4% kernel
09-21 01:35:54.409: D/dalvikvm(1226): GC_FOR_ALLOC freed 162K, 32% free 7658K/11216K, paused 11ms, total 11ms
09-21 01:35:54.419: I/dalvikvm-heap(1226): Grow heap (frag case) to 8.748MB for 1127532-byte allocation
09-21 01:35:54.459: D/dalvikvm(1226): GC_FOR_ALLOC freed <1K, 29% free 8759K/12320K, paused 42ms, total 42ms
09-21 01:35:54.589: D/(1226): HostConnection::get() New Host Connection established 0xb8579720, tid 1243
09-21 01:36:02.879: W/ActivityManager(1226): Activity destroy timeout for ActivityRecord{b174f320 u0 com.example.fromstart/.MainActivity}

これが私がその活動と呼んでいる方法です -

activity1.java:

alert_menu = (Button) findViewById(R.id.alert_menu);
            alert_menu.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    Intent i = new Intent(settings.this,Dialog.class);
                        startActivity(i);
                    }
                }); 

ダイアログ.java:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_dup);

for(int i =1;i<=info.getrowcountofpersons();i++) 
{
    items[i-1]=info.getPersonList(i); //this method will return each person name and will be stored in items[] array
    System.out.println("The list items are:"+items[i-1]); 
    Toast.makeText(getApplicationContext(), items[i-1], Toast.LENGTH_LONG).show();

}
}

しかし、 for ループを実行して配列を として初期化する代わりにprivate String[] items = {"Warrior","Archer","Wizard"};、ダイアログが表示され、そのエラーは発生しません。ここで何が問題になる可能性がありますか?

前もって感謝します。

4

1 に答える 1

0

sqlite プロセスからデータを取得中のボタンをクリックしていると思います。そのため、プロセスが完了するまで待つ必要があります。AsyncTaskからデータを取得するために使用することをお勧めしますSQLite。詳細については、このスレッドを参照してください。

于 2013-09-21T06:01:42.440 に答える