如何将值从1类方法传递到另一个类活动
强文
public class A extends Activity{
int value;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
.
.
.
methodA();
}
public void methodA(){
if (condition){
value =1
}
else if (condition){
value =2
}
else{
value =3
}
}
}
}
B类
Public class B extends Activity{
protected void onCreate(Bundle savedInstanceState){
int val;
super.onCreate(savedInstanceState);
.
.
//how do we can get val = value
}
}
问题是B类val
如何从A级获得value
,是否会为这些条件工作?
答案 0 :(得分:0)
为此目的使用意图
public void methodA(){
if (condition){
value =1
}
else if (condition){
value =2
}
else{
value =3
}
Intent intent = new Intent(this,B.class);
intent.putExtra("key",value);
startActivity(intent);
}
然后
Public class B extends Activity{
protected void onCreate(Bundle savedInstanceState){
int val;
super.onCreate(savedInstanceState);
int value = getIntent().getIntExtra("key",0);
.
答案 1 :(得分:0)
启动活动B时,您可以使用意图发送值。
在A(开始B时):
Intent intent = new Intent(A.this, B.class);
intent.putExtra("MYVALUE", val);
startActivity(intent);
在B:
val = getIntent().getIntExtra("MYVALUE");
答案 2 :(得分:0)
有几种传递值的选项。但是,在我的私人观点中,传递整数并不是最佳模式。我曾经创建过课程。称之为实现 Serializable 的ContainerWithData(可以是Parcalable)。我更喜欢第一个,因为它可以在其他库中使用,如Gson用于api发送或mappers转换。
Class Aa extends Activity {
public initAndRunBeAcitvity(int parameterInt){
ContainerWithData data = new ContainerWithData();
data.setIntegerValue(parameterInt);
runBe(data);
}
public void runBe(ContainerWithData data){
Intent intent = new Intent(Aa.this,Be.class);
intent.putExtra("MyBeData",data);
startActivity(intent);
}
}
Class Be extends Activity {
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
prepareInitParameters();
}
private void prepareInitParameters(){
getInitParameters();
checkInitParameters();
}
private void getInitParameters(){
ContainerWithData value = getIntent().getSerializableExtra("MyBeData");
this.value = value;
}
private void checkInitParameters(){
if (value==null){
//Perform any initialization data,
//message or postDelayed closing of activity
}
}
}
Class ContainerWithData implements Serializable {
@Getter
@Setter
private Integer integerValue;
//can be null if not setted,
//so should be checked by if conditions later on controller of view logic
}
所以命题是使用
getIntent()getSerializableExtra( “MyBData”);
和
getIntent()getSerializableExtra( “MyBData”); 与使用模型传递数据一起使用。
随着应用程序的增长,我多次使用这种模式避免花费更多时间来添加新值。