0

私は再び助けを求めるためにここにいます。誰かがそれを解決できることを願って、私の問題の詳細を説明します。最初のアクティビティonClick では、メソッドの挿入が実行されます

 public class ActivityUn extends Activity {

   final String PREFS_NAME = "MyPrefsFile";
  final String ID = "id";
 DBAdapter db = new DBAdapter(this); 
  public void  ajouter(View v) {

    db.open();
      Toast.makeText(getApplicationContext(), "Données enregistrées", Toast.LENGTH_LONG).show();


      SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
       long id = db.insertMENAGE(rm_1ts,rm_2ts,rm_3ts);

      prefs.edit().putLong(ID, id).commit();
           db.close();
      }

2 番目のアクティビティ コードは次のとおりです。

   public class ActivityDeux  extends Activity {


    SharedPreferences prefs2 = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
    private SharedPreferences prefs;
    long id = prefs.getLong(ID, 0);

    DBAdapter db = new DBAdapter(this);
     public void  ajouter(View v) {
        db.open();


        db.insertMENAGE2(id,a16,b17,rm_18_1ts,rm_18_2ts,c19,d20,e21);
        db.close();                     
        } 

ここで、2 つのメソッド insert と update ...

 public long insertMENAGE(String Region, String Provence_prefecture ,StringCommune_Arrondissement) {
  ContentValues initialValues = new ContentValues();
      initialValues.put(col_Region,Region);
      initialValues.put(col_Provence_prefecture ,Provence_prefecture);
      initialValues.put(col_Commune_Arrondissement,Commune_Arrondissement);
       return db.insert(MENAGE,null, initialValues);
  }

2 番目のアクティビティでは、行の残りの列を完成させて同じテーブルを更新します。

  public void insertMENAGE2(int id, int a16, int b17) {
   ContentValues values = new ContentValues();
      values.put(col_Type_habitat,a16);
      values.put(col_Statut_occupation ,b17);
      db.update(MENAGE,values,_id+"="+id, null);
}

id ( primary key )ここで、最後に挿入されたテーブルの行のを示したいと思います。

私はすでに解決策を探しましたが、同じテーブルを更新する他のアクティビティがあるため、私の状況には適応していません

idそして、関係するものが最後に挿入されたものであることを毎回示す必要があります。

ありがとう

4

2 に答える 2

2

編集:

public class ActivityUn extends Activity {

    final String PREFS_NAME = "MyPrefsFile";
    final String ID = "id";
    DBAdapter db = new DBAdapter(this);

    public void  ajouter(View v) {
        db.open();
        Toast.makeText(getApplicationContext(), "Données enregistrées", Toast.LENGTH_LONG).show();
        SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
        long id = db.insertMENAGE(rm_1ts,rm_2ts,rm_3ts);
        prefs.edit().putLong(ID, id).commit();
        db.close();
    }
}

public class ActivityDeux extends Activity {

    final String PREFS_NAME = "MyPrefsFile";
    final String ID = "id";
    DBAdapter db = new DBAdapter(this);

     public void  ajouter(View v) {
        db.open();
        SharedPreferences prefs2 = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
        long id = prefs.getLong(ID, 0);
        //update the value in the table with the id you get from Sharedpreferences
        db.insertMENAGE2(id,a16,b17,rm_18_1ts,rm_18_2ts,c19,d20,e21);
        db.close();                     
    }
}

2 番目のアクティビティで 2 つの SharedPreferences 変数を使用しています。2 つ目 (使用していたもの) はインスタンス化されていません。これにより、NullPointer 例外がスローされます。developer.google.comにある SQLite と SharedPreferences に関するドキュメントを読み、コードの動作を理解してください。また、フランス語を話さない国の誰かがあなたのコードを読んだり編集したりする必要があるときはいつでも、コードにフランス語の単語を使用しないようにしてください。

于 2013-11-06T13:58:16.683 に答える