我的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());
声明userSolution
和batteryLevel
,以便其他类 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
课程中。有人能给我一个好的方法我可以写出来吗?谢谢。
答案 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();