2016-06-14 2 views
1

Bin neu für Android-Entwicklung ich muss Absicht zwei verschiedene Absicht zu gleicher Aktivität zu unterscheiden lassen Sie mich klar erklären, ich habe einen Knopf, wenn Benutzer diese Taste drücken, wird es zu anderen Aktivitäten auslösen, in denen es einige Absicht Wert von dort basiert Benutzer wird tragen Geben Sie den Wert basierend auf dem ein. Ich beziehe listview von wo ich den Intent ableite. Angenommen, der Benutzer drückt den listview von dort aus, wie man den Intent mit einigen zusätzlichen Intent-Werten weitergibt und wie man zwei Intent beim Empfangen von Aktivitäten unterscheidet. whWie unterscheidet man zwei verschiedene Intents von derselben Aktivität?

at i have tried so far: 




@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // handle item selection 
     switch (item.getItemId()) { 
      case R.id.add: 
       int id=timertrackerdao.getNotesCount(); 
       if(id>0){ 
        Toast.makeText(getContext().getApplicationContext()," Please Finish The Pending Visit",Toast.LENGTH_SHORT).show(); 
       } 
       else { 
        Intent intent = new Intent(getActivity().getApplicationContext(), AddNotes.class); 
        intent.putExtra("taskid",taskid); 
        intent.addFlags(0); 
        startActivityForResult(intent, 1); 
       }} 
     return super.onOptionsItemSelected(item); 
    } 

Dies ist, wo i Absicht von Menüleiste

Intent intent = new Intent(getActivity().getApplicationContext(), AddNotes.class); 
        Bundle bundle=new Bundle(); 
        bundle.putInt("addnoteid",id); 
        bundle.putInt("taskid",taskid); 
        bundle.putString("checkin",checkin); 
        intent.addFlags(1); 
        startActivityForResult(intent, 1); 
auslösen

Dies ist, wo ich den Wert von Listview auswählen wird dies ist eine andere Reihe von Werten. Hier in der Empfangsaktivität, wie ich versuche, Absicht zu unterscheiden:

Intent intent=getIntent(); 
      if(intent.getFlags()==0) { 
       if (intent != null) { 
        taskid = intent.getIntExtra("taskid", 0); 
       } 
      } 
    else { 
       Bundle extras = getIntent().getExtras(); 
       if (extras != null) { 
        check.setEnabled(false); 
        // TaskID=extrass.getInt("noteid"); 
        id = extras.getInt("addnoteid"); 
        date = extras.getString("checkin"); 
        TaskID = extras.getInt("taskid"); 
        createNotification(date); 
        AddNote(id); 
       } 
      } 

Nun meine Frage ist, wie zwei Absicht einer Differenzierung von Schaltfläche klicken und einer anderen durch Listenansicht klicken und wie zu unterscheiden, die Aktivität in Empfang ??

Antwort

3

mit einem String Setzen sowohl der Absicht, wie dies

intent.putExtra("from","button"); 

Und

intent.putExtra("from","listview"); 

nun in einer anderen Aktivität

if(getIntent().getStringExtra("from").equals("button")) 
{ //do here 
}else if(getIntent().getStringExtra("from").equals("listview")) 
{ // do here 
} 
+0

Nizza Lösung. Empfiehlst du mit dem getIntent(), auf null zu prüfen? – AJW

1

passieren einen Booleschen Parameter in dem Bündel, so etwas wie unten:

intent.putExtra("isFromOptionsMenu",true); 

Dann Aktivität in Empfang dieses boolean überprüfen.

0

nur in Aufruf-Aktivität, um den Namen der Aktivität senden die Empfangsaktivität wie

intent.putExtra("From", "Activity_Name"); 

und Aktivität in Empfang unterscheiden als

Bundle bundle = getIntent().getExtras(); 
    if (bundle != null) { 
    from = bundle.getString("From"); 
    } 
    if (from == "Activity_Name") {  
//first activity 
    } 
    else{ 
//second activity 
    } 
0

nur in der Absicht setzen und zusätzliche boolean oder Aktivitätsnamen oder eine ganze Zahl, die Sie zwischen den Aktivitäten unterscheiden helfen.

zuerst extrahieren Sie den Marker dann und basierend auf diesem Extrakt andere Informationen.

intent.putExtra("Name","activity1"); 

in einer anderen Tätigkeit

intent.putExtra("Name","activity2"); 

in Empfang Aktivität:

Intent intent = getIntent(); 
Bundle extras = intent.getExtras(); 

if(extras != null){ 
    String name = extras.getString("Name"); 
    if(name.equals("activity1")){ 
     // do something 
    }else{ 
     // do something else 
    } 
+0

Ich verstehe die Ansätze. Können Sie für jedes ein Beispiel geben? – AJW