簡體   English   中英

Android / Java通過方法從其他類中獲取價值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM