0

Ich habe zwei Anwendungen, und ich muss Daten (Text und Bild) von einem zum anderen teilen. Alles funktioniert gut, außer, wenn ich das Bild nach dem Ändern des Textes ändere (ich lade das Foto hoch, nachdem ich den Text eingegeben habe, oder ich lade das Bild nach der Texteingabe hoch), wird mein Bild nicht in der zweiten Anwendung aktualisiert. Ich brauche etwas wie TextWatcher für ImageView. Irgendwelche Ideen ? HierAndroid: Update Image Uri in der Absicht von ShareActionProvider

ist die wichtige Teile meiner ersten Anwendung:

Uri imageUri;

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

     @Override 
     public void afterTextChanged(Editable s) { 
      if (mShareActionProvider != null) { 
       mShareActionProvider.setShareIntent(setShareIntent()); 
      } 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.layout_menu, menu); 

    MenuItem share = menu.findItem(R.id.menu_item_share); 

    mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(share); 
    mShareActionProvider.setShareIntent(setShareIntent()); 
    invalidateOptionsMenu(); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    setMessageIntent(); 
    return super.onOptionsItemSelected(item); 
} 

private Intent setShareIntent() { 
    String share = message.getText().toString(); 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 

    shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri); 
    if (imageUri != null) { 
     shareIntent.setType("image/png"); 
    } else { 
     shareIntent.setType("text/plain"); 
    } 
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Here goes my sharing"); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, share); 
    return shareIntent; 
} 

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

       imageUri = data.getData(); 
       String[] path = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = getContentResolver().query(imageUri, path, null, null, null); 
       cursor.moveToFirst(); 
       int index = cursor.getColumnIndex(path[0]); 
       String imgString = cursor.getString(index); 
       image.setImageURI(imageUri); 
       break; 

    } 

} 

Und hier ist meine zweite Anwendung, wo ich die Daten gemeinsam nutzen:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    Intent receiver = getIntent(); 
    String received_text = receiver.getStringExtra(receiver.EXTRA_TEXT); 

    Uri imageUri = (Uri) receiver.getParcelableExtra(Intent.EXTRA_STREAM); 
    if (imageUri != null) { 
     Bitmap bitmap = null; 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     image.setImageBitmap(bitmap); 

    } 
    if (received_text != null) { 
     text.setText(received_text); 
    } 
} 

Antwort

0

Ich weiß nicht, ob das so dumm war und weitere Probleme verursachen kann, aber im Moment funktioniert es vollkommen in Ordnung. Wenn jemand das für eine schlechte Idee hält, sag mir bitte, warum. Dies ist, was ich getan habe:

  1. Ich erklärte shareIntent als Global.
  2. Ich habe imageUrl in Absicht auch nach dem Hochladen eines neuen Fotos
  3. Ich habe imageUrl in der afterTextChanged() -Funktion, so dass jedes Mal, wenn ich meinen Text ändere, meine neue imageUri wird auch eingestellt.
0

Wenn er zum ersten Mal Upload-Bild zu einer anderen Anwendung, seine Zeit onCreate Methode erstmals Anruf in der zweiten Anwendung nach dem zweiten Mal Bild-Aufruf von der ersten Anwendung zu einem anderen Zeitpunkt, wenn die zweite Anwendung bereits erstellt wurde, dass die Zeit onCrete nicht aufrufen, so ist es besser für onResume-Methode für Sie.

+0

Das Problem ist in meiner ersten Anwendung, denn imageUrl ändert sich nicht. es ändert sich nur, wenn ich den Text ändere, weil ich Absicht in ShareActionProvider dort und auch in OnCreateOptionMenu setze. – Astgh

+0

set Log, wenn Sie Image URI in Intent und onActivityResult festlegen. –

Verwandte Themen