Ich habe drei Aktivitäten, die erste wird verwendet, um einige Werte aus der Datenbank zu halten, und eine Listenansicht wurde auf der zweiten angezeigt, wenn ich auf ein Element in der Listenansicht klicken, werde ich zur dritten Aktivität und in der Lage springen Um das ausgewählte Element zu bearbeiten, werden nach dem Aktualisieren der Daten in der Datenbank neue Daten in der zweiten Aktivität angezeigt. Wenn ich jedoch zur ersten Aktivität zurückkehre, wurde nichts aktualisiert. Wie kann ich die aktualisierten Daten auch in der ersten Aktivität abrufen? ? Jede Hilfe wird geschätzt.android Wie kann ich meine Hauptaktivität aktualisieren, nachdem ich die Datenbank aktualisiert habe?
Der zweite Aktivitätscode:
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class SetupActivity extends AppCompatActivity {
private Context context;
static String extra = "values";
ListView mListView;
final String[] setItems = {"name","birthday","type","sex"};
@Override
public void onCreate(Bundle savedInstance){
super.onCreate(savedInstance);
setContentView(R.layout.setuplist);
mListView = (ListView)findViewById(R.id.listview);
context = this;
updateView();
}
private void updateView(){
DogDatabaseHelper dbHelper= new DogDatabaseHelper(getApplicationContext());
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.query("Dog",null,null,null,null,null,null,null);
if(cursor.moveToFirst()){
String name = cursor.getString(cursor.getColumnIndex("name"));
String birthday = cursor.getString(cursor.getColumnIndex("birthday"));
String size = cursor.getString(cursor.getColumnIndex("size"));
String sex = cursor.getString(cursor.getColumnIndex("sex"));
final String[] setValues = {name,birthday,size,sex};
ListAdapter listAdapter = new CustomAdapter(this,setItems,setValues);
mListView.setAdapter(listAdapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
String setupItemValue = setValues[position];
String setupItem = setItems[position];
Intent intent;
if(setupItem.equals("name")){
intent = new Intent(SetupActivity.this,ChangeName.class);
intent.putExtra(extra,setupItemValue);
startActivityForResult(intent,1);
} else if(setupItem.equals("birthday")){
intent = new Intent(SetupActivity.this,ChangeBirthday.class);
intent.putExtra(extra,setupItemValue);
startActivityForResult(intent,2);
}else if(setupItem.equals("type")){
intent = new Intent(SetupActivity.this,ChangeType.class);
intent.putExtra(extra,setupItemValue);
startActivityForResult(intent,3);
}else{
intent = new Intent(SetupActivity.this,ChangeSex.class);
intent.putExtra(extra,setupItemValue);
startActivityForResult(intent,4);
}
}
});
}
cursor.close();
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
DogDatabaseHelper dbHelper= new DogDatabaseHelper(getApplicationContext());
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.query("Dog",null,null,null,null,null,null,null);
switch (requestCode){
case 1:
if (resultCode == RESULT_OK){
ContentValues cv = new ContentValues();
cv.put("name",data.getStringExtra("return_name"));
db.update("dog",cv,"id=?",new String[]{"1"});
}
break;
case 2:
Toast.makeText(this, "Update2", Toast.LENGTH_SHORT).show();
if(resultCode == RESULT_OK){
ContentValues cv = new ContentValues();
cv.put("birthday",data.getStringExtra("return_birthday"));
db.update("dog",cv,"id=?",new String[]{"1"});
}
break;
case 3:
Toast.makeText(this, "Update3", Toast.LENGTH_SHORT).show();
if(resultCode == RESULT_OK){
ContentValues cv = new ContentValues();
cv.put("size",data.getStringExtra("return_type"));
db.update("dog",cv,"id=?",new String[]{"1"});
}
break;
case 4:
if(resultCode == RESULT_OK){
ContentValues cv = new ContentValues();
cv.put("sex",data.getStringExtra("return_sex"));
Toast.makeText(this, data.getStringExtra("return_sex"), Toast.LENGTH_SHORT).show();
int r = db.update("dog",cv,"id=?",new String[]{"1"});
if(r != 1){
Toast.makeText(this, "Update3", Toast.LENGTH_SHORT).show();
}
}
break;
}
db.close();
updateView();
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.add,menu);
return true;
}
@Override
public boolean onOptionsItem
Selected(MenuItem item){
int id = item.getItemId();
if(id == R.id.add){
}
return super.onOptionsItemSelected(item);
}
}
Haben Sie versucht, Refresh-UI-Logik in der 'onResume()' Methode in Ihrer ersten Aktivität anzuwenden? – parohy
Rufen Sie Ihre Methode zum Abrufen von Daten aus der Datenbank bei onResume() -Methode in Ihrer MainActivity.class –
@parohy Meinst du runUIthread? – Ben