我想要三个 variables
另一个 class
在我的java(android)项目中 main activity
. 所以我把它们放在一个盒子里 bundle
把它放进一个 Intent
. 变量来自 Object
我在第三个类中创建了以下内容:
public class Transaction {
private float value;
private int transaction_Date;
private String description;
public Transaction(float value, int transaction_Date, String description){
super();
this.value = value;
this.transaction_Date = transaction_Date;
this.description = description;
}
public float getValue(){
return value;
}
public int getTransaction_Date(){
return transaction_Date;
}
public String getDescription(){
return description;
}
public void setValue(float value) {
this.value = value;
}
public void setTransaction_Date(int transaction_Date) {
this.transaction_Date = transaction_Date;
}
public void setDescription(String description) {
this.description = description;
}
这是我试图把数据输入到上面提到的 Intent
:
public class AddMoneyTransaction extends AppCompatActivity implements View.OnClickListener {
Button addDepositButton;
EditText depositInput, depositInputDate, depositInputNote;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_money_transaction);
//setup the Button and EditText
addDepositButton = (Button)findViewById(R.id.addDepositButton);
depositInput = (EditText) findViewById(R.id.depositInput);
depositInputDate = (EditText) findViewById(R.id.depositInputDate);
depositInputNote = (EditText) findViewById(R.id.depositInputNote);
//get the onClickListener
addDepositButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Intent depositIntent = new Intent(AddMoneyTransaction.this, AssetsOverview.class);
Transaction deposit = new Transaction(100, 16, "random comment");
deposit.setValue(Float.parseFloat(depositInput.getText().toString()));
deposit.setTransaction_Date(Integer.parseInt(depositInputDate.getText().toString()));
deposit.setDescription(depositInputNote.getText().toString());
Bundle depositBundle = new Bundle();
depositBundle.putFloat("value", Float.parseFloat(depositInput.getText().toString()));
depositBundle.putInt("date", Integer.parseInt(depositInputDate.getText().toString()));
depositBundle.putString("description", depositInputNote.getText().toString());
depositIntent.putExtras(depositBundle);
startActivity(depositIntent);
}
当然,这是行不通的:
//populated transaction list
protected void populateTransactionList() {
Intent depositIntent = getIntent();
Transaction deposit = (Transaction) getIntent().getExtras();
}
那么我怎样才能从我的记忆中提取出我的三个变量呢 Intent
?
2条答案
按热度按时间gorkyyrv1#
通过intent传递自定义对象的方法是实现类似于下面给出的事务类的parcelable接口。
使事务类像下面给出的代码段一样可打包
将可包裹的物体放入下面给出的意图中
并接受以下意图
v64noz0r2#
临时演员是
Bundle
. 你知道这一点,因为你有:来填补那些额外的空缺。
自从你打电话来
putFloat("value", ...)
,putInt("date", ...)
,和putString("description", ...)
在那上面Bundle
,您将使用关联的getter根据这些键从extra中检索值。这可以通过以下方式实现:打电话
getFloatExtra()
,getIntExtra()
,和getStringExtra()
直接在Intent
退回人getIntent()
,或去拿那个
Bundle
通过getIntent().getExtras()
,然后打电话getFloat()
,getInt()
,和getString()
上Bundle
一Transaction
不能进入extras,因为不能将任意java对象放入extras。你可以让Transaction
实施Parcelable
,在这种情况下,你可以把它直接放入额外的。