2017-02-02 21 views
1

Ich habe unten Absicht in einer Aktivität bestandenWie erhält man Absicht-URI?

productListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Intent intent = new Intent(MainActivity.this, ProductDetail.class); 
      Uri currentProductUri = ContentUris.withAppendedId(InventoryContract.ProductEntry.CONTENT_URI, id); 
      intent.setData(currentProductUri); 
      startActivity(intent); 
     } 
    }); 

Jetzt Wie Absicht uri in einer anderen Aktivität erhalten? kann mir jemand helfen zu lösen. Danke

https://i.stack.imgur.com/r8les.jpg[1]

Antwort

0
  1. ändern

    startActivity(intent); 
    

    zu

    startActivityForResult(intent, URIREQUEST); 
    
  2. Feld ein Top-Modell der Klassen des Senders definieren und der Empfänger

    private static final int URIREQUEST= 1; 
    
  3. In der Empfängerklasse, wenn Sie die uri

    bekam
    Intent intent = new Intent(); 
    if(uri != null){ 
        intent.putExtra("Uri", uri.toString()); 
    } 
    setResult(RESULT_OK, intent); 
    finish(); 
    
  4. dann overide diese Methode im Sender

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    
    { 
        if(requstcode == URIREQUEST && resultCode == RESULT_OK && data != null) 
        { 
        Uri uri_data = Uri.parse(data.getStringExtra("Uri")); 
        } 
    } 
    
+0

Ich erhalte einen Fehler ich Screenshot oben gepostet haben. kannst du das bitte sehen und mir sagen, was in meinem Code falsch ist? –

+0

Ich habe meine Antwort bearbeitet, Sie müssen die empfangene Zeichenfolge auf die Uri -> 'Uri.parse (data.getCharSequenceArrayExtra (" Uri ")) analysieren;' – Alex

+0

Noch bekomme ich einen Fehler. Bitte überprüfe meinen obigen Screenshot nochmal. Danke –

Verwandte Themen