[英]Android/Java get value from other class with method
如何將值從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
,意圖在這些情況下會起作用嗎?
為此使用意圖
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);
.
開始活動B時,您可以發送帶有意圖的值。
在A中(從B開始時):
Intent intent = new Intent(A.this, B.class);
intent.putExtra("MYVALUE", val);
startActivity(intent);
在B中:
val = getIntent().getIntExtra("MYVALUE");
有幾種傳遞值的選項。 但是我個人認為傳遞整數並不是最好的模式。 我曾經創建過ex類。 稱它實現了Serializable (可能是Parcalable)的ContainerWithData。 我更喜歡第一個,因為稍后它可以被其他類(例如Gson)用於api發送或映射器轉換。
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”); 以及使用模型傳遞數據。
有了這種模式,我就避免了花更多的時間來隨着應用程序的增長而增加新的價值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.