2016-03-20 12 views
1

Ich muss wissen, wie man eine Aktivität pausiert, während die andere Aktivität einen Wert sendet. In meinem Code ruft die Hauptaktivität die zweite Aktivität auf und die zweite Aktivität sendet das Ergebnis so ideal, dass die Hauptaktivität warten sollte, bis sie das Ergebnis der zweiten Aktivität empfängt.So pausieren Sie eine Aktivität bis zu einer anderen Aktivität Gibt ein Ergebnis zurück?

public class MainActivity extends AppCompatActivity { 
public final static String key = "abc"; 
public final static String key1 = "abcd"; 
String abc; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button b1 = (Button) findViewById(R.id.button); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Toast.makeText(MainActivity.this, "sbabs", Toast.LENGTH_SHORT).show(); 
      send(); 

     } 
    }); 
} 

public void send() { 
    // Toast.makeText(MainActivity.this, "jsjaskb", Toast.LENGTH_SHORT).show(); 
    // String str="this is"; 
    String[] str = {"Blue", "Green", "Purple", "Red"}; 
    Intent intent = new Intent(this, Second.class); 
    intent.putExtra(key, str); 
    startActivityForResult(intent, 1); 


    Toast.makeText(MainActivity.this, ""+abc, Toast.LENGTH_SHORT).show(); 

    // Toast.makeText(this, ""+str, Toast.LENGTH_SHORT).show(); 

} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 1 && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     abc = extras.getString(key1); 
     // txtinput1.setText(str); 
     // Toast.makeText(this, ""+str, Toast.LENGTH_SHORT).show(); 
    } 
} 

}

public class Second extends AppCompatActivity { 
public final static String key="abc"; 
public final static String key1="abcd"; 

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

    Intent intent=getIntent(); 
    String[] msg=intent.getStringArrayExtra(key); 
    Toast.makeText(this, "" + msg[0], Toast.LENGTH_SHORT).show(); 

    Button b1 = (Button) findViewById(R.id.button2); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Toast.makeText(MainActivity.this, "sbabs", Toast.LENGTH_SHORT).show(); 
      String str = "hello"; 
      Intent intent1 = new Intent(); 
      intent1.putExtra(key1, str); 
      setResult(RESULT_OK, intent1); 
      finish(); 


     } 
    }); 
} 

}

Das Problem ist jetzt, dass die Haupttätigkeit druckt str = null, bevor der zweite Aktivität könnte den Wert str = "Hallo"

+0

Was genau ist das Problem? Sie können Ihren Toast.makeText einfach in activityResult verschieben und es wird der korrekte Wert ausgegeben. – Wukash

+0

Sie sind bereits auf dem richtigen Weg. Was ist das Problem jetzt? –

+0

können Sie es mit startActivityForResult tun .... Bereits beantwortet http://StackOverflow.com/Questions/10407159/How-to-Manage-Startactivityforresult-on-android – jonhid

Antwort

1

Aktivität zuzuordnen ist pausiert automatisch nach dem Start einer neuen Aktivität. Aber zuerst muss die von Ihnen aufgerufene Methode onClick() beendet werden. Das ABC enthält den gewünschten Text. Toast zeigt null, weil abc null ist.

Sie haben das, was Sie wollen mit dem abc-String in der

onActivityResult 

Methode zu tun, wo es um den richtigen Wert hält.

+0

thnk u man !!! es funktionierte –

Verwandte Themen