[英]How I can pass class object between two activities?
I have a class Books.java
that implements
a list of Book.java
, and in MainActivity.java
i fill the object library with books. 我有一个implements
Books.java
列表的Book.java
,在MainActivity.java
我用书籍填充对象库。 I want send the object library from MainActivity.java
to ListActivity.java
but not works with i.putExtra.
我想将对象库从MainActivity.java
发送到ListActivity.java
但不能与i.putExtra.
一起i.putExtra.
How I can do it? 我怎么能这样做?
Books.java Books.java
import java.util.ArrayList;
import java.util.List;
public class Books implements DataAggregate <Book>{
private List<Book> books;
public Books(){};
public List<Book> getAll() {
return this.getBooks();
}
public int size() {
return this.getBooks().size();
}
public void insert(Book element) {
this.getBooks().add(element);
}
public void delete(Book element) {
this.getBooks().remove(element);
}
private List<Book> getBooks() {
if (books==null){
books=new ArrayList<Book>();
}
return books;
}
} }
MainActivity.java MainActivity.java
Books library;
for (int i = 0; i<db_books.size(); i++){
String name = db_books.get(i).getBookName();
String author = db_books.get(i).getBookAuthor();
String epc = db_books.get(i).getBookEpc();
Integer number = db_books.get(i).getNumBooks();
Book myBook = new Book(name, author, epc, number);
library.insert(myBook);
}
Intent i = new Intent(getApplicationContext(),ListActivity.class);
i.putExtra("library",library);
startActivity(i);
ListActivity.java ListActivity.java
Books library = extras.getString("library");
Book.java Book.java
public class Book implements Serializable {
private String bookName;
private String bookAuthor;
private String bookEpc;
private Integer numBooks;
public Book(){
}
public Book(String bname, String bauthor, String bepc, Integer nbooks){
this.bookName = bname;
this.bookAuthor = bauthor;
this.bookEpc = bepc;
this.numBooks = nbooks;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAuthor() {
return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public String getBookEpc() {
return bookEpc;
}
public void setBookEpc(String bookEpc) {
this.bookEpc = bookEpc;
}
public Integer getNumBooks() {
return numBooks;
}
public void setNumBooks(Integer numBooks) {
this.numBooks = numBooks;
}
public void prettyPrint(){
Log.d("Book:", this.bookName+" "+this.bookAuthor+" "+this.bookEpc+" "+this.numBooks.toString());
}
}
Try this may be help to you 试试这可能对你有所帮助
send like this 像这样发送
Intent i = new Intent(getApplicationContext(),DetailedBookActivity.class);
i.putExtra("library",library);
and get like this 并得到这样的
Book libs= new Book();
libs = (Book)getIntent().getSerializableExtra("library");
Instead of 代替
Books library = extras.getString("library");
You should do 你应该做
Books library = (Books) extras. getSerializableExtra("library");
I solved in this way: 我这样解决了:
To pass between two activities I use this, 为了在两个活动之间传递我使用它,
In MainActivity.java: 在MainActivity.java中:
Intent intent=new Intent(getApplicationContext(),ListActivity.class);
Bundle bundle=new Bundle();
bundle.putSerializable("library", library);
intent.putExtras(bundle);
startActivity(intent);
In ListActivity.java to caputre the library: 在ListActivity.java中设置库:
Intent intent=this.getIntent();
Bundle bundle=intent.getExtras();
final Books library =(Books)bundle.getSerializable("library");
Final library object in ListActivity.java has all books. ListActivity.java中的最终库对象包含所有书籍。
Books class have to implements Serializable Books类必须实现Serializable
import java.util.ArrayList;
import java.util.List;
public class Books implements DataAggregate <Book>, Serializable {
private List<Book> books;
public Books(){};
public List<Book> getAll() {
return this.getBooks();
}
public int size() {
return this.getBooks().size();
}
public void insert(Book element) {
this.getBooks().add(element);
}
public void delete(Book element) {
this.getBooks().remove(element);
}
private List<Book> getBooks() {
if (books==null){
books=new ArrayList<Book>();
}
return books;
}
}
MainActivity 主要活动
Books library;
for (int i = 0; i<db_books.size(); i++){
String name = db_books.get(i).getBookName();
String author = db_books.get(i).getBookAuthor();
String epc = db_books.get(i).getBookEpc();
Integer number = db_books.get(i).getNumBooks();
Book myBook = new Book(name, author, epc, number);
library.insert(myBook);
}
// don't use applicationContext. use activity context "this".
Intent i = new Intent(this, ListActivity.class);
i.putExtra("library", library);
startActivity(i);
and ListActivity getIntent 和ListActivity getIntent
Books library = (Books) getIntent().getSerializableExtra("library");
first your Books class implements to Serializable.
Intent i = new Intent(getApplicationContext(),ListActivity.class);
i.putExtra("library",library);
startActivity(i);
get method
Intent i = getIntent();
Book libs= new Book();
libs = (Book) i.getSerializableExtra("library");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.