2

listView を持つこのアプリケーションがあり、listView の項目をクリックすると、新しいアクティビティが開きます。それはうまくいきます!

しかし、新しいアクティビティを開いて「戻るボタン」を押すと、アプリケーションは「残念ながら停止しました」。

私が間違っていることはありますか?これが私のコードです:

最初のアクティビティ:

public class AndroidSQLite extends Activity { プライベート SQLiteAdapter mySQLiteAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ListView listContent = (ListView)findViewById(R.id.contentlist);

    mySQLiteAdapter = new SQLiteAdapter(this);
    mySQLiteAdapter.openToRead();

    Cursor cursor = mySQLiteAdapter.queueAll();
    startManagingCursor(cursor);

    String[] from = new String[]{SQLiteAdapter.KEY_NOME,SQLiteAdapter.KEY_ID};
    int[] to = new int[]{R.id.text,R.id.id};

    SimpleCursorAdapter cursorAdapter =
     new SimpleCursorAdapter(this, R.layout.row, cursor, from, to);

    listContent.setAdapter(cursorAdapter);

    listContent.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {

          Toast.makeText(getBaseContext(), id + "", Toast.LENGTH_LONG).show();

          Intent details = new Intent(getApplicationContext(),DetailsPassword.class);
          startActivity(details);

        }
    });

    mySQLiteAdapter.close();
} }

2 番目のアクティビティ:

public class DetailsPassword extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  TextView text = new TextView(getApplicationContext());
  text.setText("Text to show");
  setContentView(text);
} }

// ===== 編集済み =====

ここにスタックトラックがあります

10-30 08:55:05.744: E/AndroidRuntime(28046): 致命的な例外: メイン 10-30 08:55:05.744: E/AndroidRuntime(28046): java.lang.RuntimeException: アクティビティを再開できません {com.example .sqliteexemple2/com.example.sqliteexemple2.AndroidSQLite}: java.lang.IllegalStateException: 既に閉じているカーソルを再クエリしようとしています android.database.sqlite.SQLiteCursor@4180a370 10-30 08:55:05.744: E/AndroidRuntime(28046): android.app.ActivityThread.performResumeActivity(ActivityThread.java:2701) 10-30 08:55:05.744: E/AndroidRuntime(28046): android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2729) 10-30 08 :55:05.744: E/AndroidRuntime(28046): android.app.ActivityThread$H.handleMessage(ActivityThread.java:1250) 10-30 08:55:05.744: E/AndroidRuntime(28046): android.os で。 Handler.dispatchMessage(Handler.java:99) 10-30 08:55:05.744: E/AndroidRuntime(28046): android.os.Looper.loop(Looper.java:137) 10-30 08:55:05.744: E/AndroidRuntime(28046): at android.app.ActivityThread.main(ActivityThread.java:4931) 10-30 08:55:05.744: E/AndroidRuntime(28046): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 10-30 08:55 で:05.744: E/AndroidRuntime(28046): java.lang.reflect.Method.invoke(Method.java:511) 10-30 08:55:05.744: E/AndroidRuntime(28046): com.android.internal. os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 10-30 08:55:05.744: E/AndroidRuntime(28046): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) で 10 -30 08:55:05.744: E/AndroidRuntime(28046): dalvik.system.NativeStart.main(Native Method) 10-30 08:55:05.744: E/AndroidRuntime(28046): 原因: java.lang. IllegalStateException:既に閉じられているカーソル android.database.sqlite.SQLiteCursor@4180a370 10-30 08:55:05.744: E/AndroidRuntime(28046): android.app.Activity.performRestart(Activity.java:5051) で再クエリしようとしています 10-30 08:55:05.744: E/AndroidRuntime(28046): android.app.Activity.performResume(Activity.java:5074) 10-30 08:55:05.744: E/AndroidRuntime(28046): android.app.ActivityThread で.performResumeActivity(ActivityThread.java:2691) 10-30 08:55:05.744: E/AndroidRuntime(28046): ... 10 もっと見るE/AndroidRuntime(28046): android.app.ActivityThread.performResumeActivity(ActivityThread.java:2691) 10-30 08:55:05.744: E/AndroidRuntime(28046): ... 10 詳細E/AndroidRuntime(28046): android.app.ActivityThread.performResumeActivity(ActivityThread.java:2691) 10-30 08:55:05.744: E/AndroidRuntime(28046): ... 10 詳細

4

1 に答える 1

0

onKeyUp メソッドをオーバーライドする必要があります

    @Override
public boolean onKeyUp(int keyCode, KeyEvent event) {

    Intent backintntent= new Intent();
    intententregas.setClass(ThisActiviti.this, MainActivity.class);
            // you can add extra variables 
    // intent.putExtra("variable", Value);
    startActivity(backintntent);
    finish();
    return true;

}
于 2012-10-30T10:59:41.773 に答える