Je travaille sur une application Android qui utilise un db sqlite pour contenir des informations que l'utilisateur entre. J'ai deux activités. Actuellement, l'activité principale affiche les informations de l'utilisateur à partir de la base de données. la deuxième activité est destinée uniquement à l'entrée de ces données. lorsque la seconde activité est ouverte, je vois les données sauvegardées dans les boîtes d'édition. je peux modifier et enregistrer les données. lors du retour à la première activité, les données affichées ne sont pas mises à jour. si je ferme l'application et la redémarre les nouvelles données seront affichées dans la première activité correctement, mais j'en ai besoin pour montrer immédiatement. J'ai essayé de surcharger onResume() pensant que cela aiderait. mais jusqu'ici cela ne m'a pas aidé. aidez-moi s'il vous plaît à trouver le problème. voici mon activité principale, la première activité:le texte n'est pas mis à jour jusqu'à ce que l'application soit détruite et redémarrée (curseur sqlite)
public class LaunchActivity extends AppCompatActivity{
final String SCOPE ="https://www.googleapis.com/auth/gmail.send";
private static final int REQUEST_RESOLVE_AUTH_ERROR = 1006;
private static final int REQUEST_SMS = 645;
private ImageView mImageView;
private TextView nameField;
private TextView phoneField;
private TextView emailField;
private ClientInfoDBHelper mInfoDBHelper;
private Cursor mCursor;
private String mPhoneNumber = "**********";
private String[] permissions = new String[]{Manifest.permission.SEND_SMS, Manifest.permission.READ_PHONE_STATE};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_launch);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
nameField = (TextView) findViewById(R.id.nameView);
phoneField = (TextView) findViewById(R.id.phoneView);
emailField = (TextView) findViewById(R.id.emailView);
mInfoDBHelper = new ClientInfoDBHelper(this);
SQLiteDatabase dbReader = mInfoDBHelper.getReadableDatabase();
String[] projection = {
ClientInfoContract.ClientInfoEntry.FIRST_NAME,
ClientInfoContract.ClientInfoEntry.LAST_NAME,
ClientInfoContract.ClientInfoEntry.PHONE_NUMBER,
ClientInfoContract.ClientInfoEntry.EMAIL_ADDRESS
};
String where = ClientInfoContract.ClientInfoEntry._ID + " = ?";
String[] whereArgs = {"1"};
String sortOrder = ClientInfoContract.ClientInfoEntry.FIRST_NAME + " DESC";
mCursor = dbReader.query(
ClientInfoContract.ClientInfoEntry.TABLE_NAME,
projection,
where,
whereArgs,
null,
null,
sortOrder
);
mCursor.moveToNext();
updateDisplayInfo(mCursor);
//request permissions
int MyVersion = Build.VERSION.SDK_INT;
if (MyVersion> Build.VERSION_CODES.LOLLIPOP_MR1){
if (hasPermission()){
ActivityCompat.requestPermissions(this, permissions, REQUEST_SMS);
}
}
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Are you certain you'd like to alert your attorney?", Snackbar.LENGTH_INDEFINITE)
.setAction(R.string.snack_bar_send, new View.OnClickListener(){
@Override
public void onClick(View v){
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(mPhoneNumber, null, "testing", null, null);
new MailTask().execute();
}
}).show();
}
});
mImageView = (ImageView) findViewById(R.id.imageView);
mImageView.setImageDrawable(getResources().getDrawable(R.drawable.no_handcuffs));
}
@Override
public void onResume(){
super.onResume();;
updateDisplayInfo(mCursor);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_launch, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
switch (id){
case R.id.action_settings:
//null
break;
case R.id.userInfo:
Intent infoIntent = new Intent(this, UserInfoActivity.class);
startActivity(infoIntent);
break;
}
return super.onOptionsItemSelected(item);
}
private boolean hasPermission(){
int result = ContextCompat.checkSelfPermission(this, permissions[0]);
if (result==PackageManager.PERMISSION_DENIED){
return true;
}else {
return false;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
//temporarily null// may be used in future to handle multiple permissions
}
public void updateDisplayInfo(Cursor curse){
//curse.moveToNext();
StringBuilder sb = new StringBuilder();
sb.append(curse.getString(curse.getColumnIndex(ClientInfoContract.ClientInfoEntry.FIRST_NAME)))
.append(" ")
.append(curse.getString(curse.getColumnIndex(ClientInfoContract.ClientInfoEntry.LAST_NAME)));
nameField.setText(sb.toString());
}
}
Merci. Cela a fonctionné pour moi. –