从一个活动获得价值到另一个活动

时间:2014-04-19 04:26:52

标签: java android android-intent

任何人都可以指导我找到正确的方向,因为情况如此 有两个类calssA with Activity而classB是简单的java类

1.classA有一个编辑框,用户输入一些值。 2.classB有一个计算用户输入的方法。

需要从classA获取用户输入值到classB。

a)。由于其他类没有活动,因此无法通过传递意图获得它。 b)。通过创建一个类来尝试getter setter方法,调用setter,用户输入详细信息。    并在另一个班级中调用getter。

仍然是值为null,所以这里显然缺少什么。对示例或简要说明的任何指导都会很棒。谢谢

5 个答案:

答案 0 :(得分:2)

您可以使用自己的自定义类来存储数据,并在您需要的任何地方使用它。

数据类

public class Data {

       private String a,b;
   private static Data data= new Data( );

   /* A private Constructor prevents any other 
    * class from instantiating.
    */
   private Data (){ }

   /* Static 'instance' method */
   public static Data getInstance( ) {
      return data;
   }

       public String getA()
       {
          return this.a;
       }

       public String getB()
       {
          return this.b;
       }

       public void setA(String a)
       {
          this.a = a;
       }

       public String getB(String b)
       {
          this.b = b;
       }
  }

在活动中

Data data = Data.getInstance()

data.setA("Stack");
data.setA("Overflow");

您可以在Java文件中使用此值

Data data = Data.getInstance()

System.out.println(data.getA());
System.out.println(data.getB());

答案 1 :(得分:1)

根据我的知识,你必须使用单身类。

public class DataHolderClass {
private static DataHolderClass dataObject = null;

private DataHolderClass() {
    // left blank intentionally
}

public static DataHolderClass getInstance() {
    if (dataObject == null)
        dataObject = new DataHolderClass();
    return dataObject;
}

private String _ProductNames;

public String get_ProductNames() {
    return _ProductNames;
}

public void set_ProductNames(String _ProductNames) {
    this._ProductNames = _ProductNames;
}
}

设置数据

DataHolderClass.DataHolderClass.set_ProductNames(your data variable);

获取数据

DataHolderClass.DataHolderClass.get_ProductNames(your data variable);

答案 2 :(得分:0)

您可以将edittext值保存在SharedPreferences中,从而使其在所有活动中都可用。 通过这样做,您可以毫无困难地获取其他活动中的值。

例如:

SharedPreferences.Editor editor = preferences.edit();
editor.putString("edtTextValue", valueOfEditText);
editor.commit();

进一步提取其他活动中的值,

preferences.getString("edtTextValue", "");

答案 3 :(得分:0)

在您的活动类中创建

public static String valueEntered;
valueEntered=mEdtTxt.getText().toString();

并在你想要的java类中

String enteredValue=ClassA.valueEntered; 

答案 4 :(得分:0)

使用类来保存您的值

public class ValueHolderClass {

    public static String valueYouWantToStore_arg;

}

在活动类

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText ed=(EditText)findViewById(R.id.myedittext);
        valueYouWantToStore_arg= ed.getText().toString().trim();

    }

如果您不想保留数据,可以使用此功能。 你也可以参考 Ram kiran 这是一个更好的方法。

如果您想保留数据并存储以供日后使用,也可以使用SharedPrefernces。

将值存储在共享首选项中:

  SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
  SharedPreferences.Editor editor = preferences.edit();
  editor.putString("Name","Harneet");
  editor.commit();

从共享首选项中检索值:

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
  String name = preferences.getString("Name","");
  if(!name.equalsIgnoreCase(""))
  {
    name = name+"  Sethi";  /* Edit the value here*/
  }