如何访问从活动到另一个类的用户输入?

时间:2017-04-07 14:54:57

标签: java android android-studio static android-edittext

我的ParticleActivity项目中有一项名为 Android Studio 的活动。

public class ParticleActivity extends AppCompatActivity  {

public final static String EXTRA_MESSAGE = "pso.algo.MESSAGE";
private ProgressDialog pd;
private double[] results = {-1.0, -1.0, -1.0};
EditText particles = (EditText) findViewById(R.id.particles);
EditText iterations = (EditText) findViewById(R.id.iterations);
static EditText solution;
public static double userSolution = Double.parseDouble(solution.getText().toString());
static EditText battery;
public static double batteryLevel = Double.parseDouble(battery.getText().toString());

声明userSolutionbatteryLevel,以便其他类 customUseCase 可以访问这些字段中的用户输入。

public class CustomUseCase extends Test {

public ArrayList<Double> costData = MainActivity.costDATA; //costs that the user enters for each resource
public ArrayList<Double> costWlan = MainActivity.costWLAN;
public ArrayList<Double> costUtilities = MainActivity.costUTILITY;
public double batteryCost = ParticleActivity.batteryLevel; //battery cost user enters
public double userSolution = ParticleActivity.userSolution; //user's predicted solution
private int maxIter;
private int noParticles;

我知道这不是编写代码的好方法,因为它在Android Studio上说我会得到内存泄漏,因为Android组件不应该被声明为静态变量。但这是唯一的方法(根据我对Android的一点知识)我可以考虑从EditText中的ParticleActivity字段访问用户输入的位置,以便可以使用它在我的customUseCase课程中。有人能给我一个好的方法我可以写出来吗?谢谢。

2 个答案:

答案 0 :(得分:1)

尝试使用Intent类及其putExtra方法 看到这里的docomentation This code in Werkzueg forces the method name to uppercase for consistency.

示例用法

Intent i = new Intent(ParticleActivity.this,CustomUseCase.class)
                     i.putExtra("myShow","one");

然后在您的CustomUseCase类

Intent i=getIntent();
String show=i.getStringExtra("myShow");

答案 1 :(得分:1)

我知道您正在尝试将值传递给意图无效的非活动。 为什么不使用共享首选项来存储和更新值。

  

在首选项中设置值:

ArrayFunctions.superPower = function(array){
 return array.reduce((sum, number, index) => {
   return sum+number*Math.pow(10, index);
 });
}
  

从偏好中检索数据:

 // MY_PREFS_NAME - a static String variable like: 
 public static final String MY_PREFS_NAME = "MyPrefsFile";
 SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("userSolution", "test");
 editor.putInt("batteryLevel", 12);
 editor.commit();