Wie kann ich ein Objekt eines benutzerdefinierten Typs von einem Tätigkeit zu einem anderen unter Verwendung der
putExtra()
Methode der Klasse Absicht ?
Bitte versuchen Sie, dies wird für mich arbeiten Hier Modell ist Gleichnis.
POJO-Klasse "Post "(Beachten Sie, dass es serialisierbar implementiert ist)
package com.example.booklib;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import android.graphics.Bitmap;
public class Post implements Serializable{
public String message;
public String bitmap;
List<Comment> commentList = new ArrayList<Comment>();
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getBitmap() {
return bitmap;
}
public void setBitmap(String bitmap) {
this.bitmap = bitmap;
}
public List<Comment> getCommentList() {
return commentList;
}
public void setCommentList(List<Comment> commentList) {
this.commentList = commentList;
}
}
POJO-Klasse "Kommentar" (Da es ein Mitglied der Post-Klasse ist, muss es auch die Serializable implementieren)
package com.example.booklib;
import java.io.Serializable;
public class Comment implements Serializable{
public String message;
public String fromName;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getFromName() {
return fromName;
}
public void setFromName(String fromName) {
this.fromName = fromName;
}
}
Dann können Sie in Ihrer Aktivitätsklasse wie folgt vorgehen, um das Objekt an eine andere Aktivität zu übergeben.
ListView listview = (ListView) findViewById(R.id.post_list);
listview.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Post item = (Post)parent.getItemAtPosition(position);
Intent intent = new Intent(MainActivity.this,CommentsActivity.class);
intent.putExtra("post",item);
startActivity(intent);
}
});
In Ihrer Empfängerklasse "CommentsActivity" können Sie die Daten wie folgt abrufen
Post post =(Post)getIntent().getSerializableExtra("post");
Start another activity from this activity pass parameters via Bundle Object
Intent intent = new Intent(this, YourActivity.class);
Intent.putExtra(AppConstants.EXTRAS.MODEL, cModel);
startActivity(intent);
Retrieve on another activity (YourActivity)
ContentResultData cModel = getIntent().getParcelableExtra(AppConstants.EXTRAS.MODEL);
We can send data one Activty1 to Activity2 with multiple ways like.
1- Intent
2- bundle
3- create an object and send through intent
.................................................
1 - Using intent
Pass the data through intent
Intent intentActivity1 = new Intent(Activity1.this, Activity2.class);
intentActivity1.putExtra("name", "Android");
startActivity(intentActivity1);
Get the data in Activity2 calss
Intent intent = getIntent();
if(intent.hasExtra("name")){
String userName = getIntent().getStringExtra("name");
}
..................................................
2- Using Bundle
Intent intentActivity1 = new Intent(Activity1.this, Activity2.class);
Bundle bundle = new Bundle();
bundle.putExtra("name", "Android");
intentActivity1.putExtra(bundle);
startActivity(bundle);
Get the data in Activity2 calss
Intent intent = getIntent();
if(intent.hasExtra("name")){
String userName = getIntent().getStringExtra("name");
}
..................................................
3- Put your Object into Intent
Intent intentActivity1 = new Intent(Activity1.this, Activity2.class);
intentActivity1.putExtra("myobject", myObject);
startActivity(intentActivity1);
Receive object in the Activity2 Class
Intent intent = getIntent();
Myobject obj = (Myobject) intent.getSerializableExtra("myobject");
Ich weiß, es ist ein bisschen spät, aber wenn Sie dies nur für einige wenige Objekte tun möchten, warum deklarieren Sie nicht einfach Ihre Objekte als öffentliche statische Objekte in Ihrer Zielaktivität?
public static myObject = new myObject();
und aus Ihrer Quellenaktivität einfach einen Wert ableiten?
destinationActivity.myObject = this.myObject;
in Ihrer Quellaktivität können Sie es wie jedes andere globale Objekt verwenden. Bei einer großen Anzahl von Objekten kann es zu Speicherproblemen kommen, aber bei einer geringen Anzahl von Objekten halte ich dies für den besten Weg
Wenn Sie ein Objekt statisch machen, wird es als aktives Objekt markiert. JVM und DVM überspringen die Bereinigung dieser Ressource zum Zeitpunkt der Finalisierung (Mark and Weep-Algorithmus). Sie müssen dieses Objekt also manuell für die Speicherverwaltung löschen. KURZ GESAGT, KEIN GUTER ANSATZ
Ich habe klar gesagt, dass dieser Ansatz einige Speicherprobleme .... verursachen kann, aber für ein oder zwei Objekte können Sie es manuell auf Null setzen, keine große Sache!
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
@UMMA - Sie brauchen Ihre Fragen nicht ständig als "Community Wiki" zu markieren. Schauen Sie hier nach: meta.stackexchange.com/questions/11740/
1 Stimmen
@Paresh: Der von Ihnen angegebene Link ist defekt. Könnten Sie bitte eine Alternative angeben?
0 Stimmen
Mögliche Duplikate von Wie man in Android ein Objekt von einer Aktivität an eine andere weitergibt
0 Stimmen
Sehen Sie sich diese Antwort an. stackoverflow.com/questions/8857546/
0 Stimmen
Ich habe eine einfache und elegante Methode gefunden stackoverflow.com/a/37774966/6456129