Android / Java通过方法从其他类获取值

时间:2014-04-15 09:17:29

标签: java android android-intent

如何将值从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,是否会为这些条件工作?

3 个答案:

答案 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”);   与使用模型传递数据一起使用。

随着应用程序的增长,我多次使用这种模式避免花费更多时间来添加新值。