Ich versuche derzeit, über einen REST-API-Aufruf erfasste Daten zu verarbeiten, die benötigten Informationen zu analysieren und diese Informationen an eine neue Aktivität weiterzuleiten . Ich verwende den asynchronen HTTP-Client von loopj.com für den REST-Client und verwende dann den folgenden Code für meine onClick
und onCreate
für die aktuellen bzw. zukünftigen Aktivitäten.Übergeben von Daten von einer Aktivität an eine andere mithilfe von Bundle - nicht in der zweiten Aktivität angezeigt
Eclipse gibt mir keine Fehler für irgendeinen meiner Code, aber wenn ich versuche, im Emulator zu laufen, bekomme ich nichts (d. H. Leerer weißer Bildschirm), wenn die neue Aktivität/Ansicht geöffnet wird. Ich habe versucht, mit einer anderen URL in meinem REST CLIENT zu codieren, aber ich sehe immer noch nichts. Ich habe sogar den API-Aufruf aus der Gleichung herausgenommen, indem ich das try/catch in onClick
auskommentiert habe und venueName
in bundle.putString("VENUE_NAME", venueName);
zu searchTerm
geändert habe. Trotzdem wird die neue Ansicht angezeigt, aber nichts wird angezeigt. Was wird nicht weitergegeben, oder was vergesse ich, dass die zweite Aktivität die venueName
zeigt?
public void onClick(View view) {
Intent i = new Intent(this, ResultsView.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String searchTerm = editText.getText().toString();
//call the getFactualResults method
try {
getFactualResults(searchTerm);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Create the bundle
Bundle bundle = new Bundle();
//Add your data from getFactualResults method to bundle
bundle.putString("VENUE_NAME", venueName);
//Add the bundle to the intent
i.putExtras(bundle);
//Fire the second activity
startActivity(i);
}
Methode in der zweiten Aktivität, die die Absicht erhalten soll und bündeln und angezeigt werden:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get the message from the intent
//Intent intent = getIntent();
//String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
//Get the bundle
Bundle bundle = getIntent().getExtras();
//Extract the data…
String venName = bundle.getString(MainActivity.VENUE_NAME);
//Create the text view
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(venName);
//set the text view as the activity layout
setContentView(textView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getActionBar().setDisplayHomeAsUpEnabled(true);
}
}
Vielen Dank für Ihre Hilfe. Sehr geschätzt.
Dies ist eine wirklich großartige, kurze und dennoch detaillierte Antwort. Danke, dass du das so klar geschrieben hast. Es half mir zu verstehen, wie man Bundles sehr schnell verwendet. – raddevus
Danke. Das Beispiel hat mir geholfen. – Edwinfad