我有兩個名爲Main和Results的活動。主要我有一個START按鈕,可將用戶輸入的數據發送到藍牙設備,從BT設備讀回測量數據,處理數據,然後在結果活動中繪製圖形。在結果活動中,我希望有另一個START按鈕來執行完全相同的功能,因此用戶不必保持切換屏幕進行另一次測量。我將主要活動中的START按鈕設置爲靜態,以便可以從Results活動調用if。這似乎工作,但它每次再次按下START按鈕時都會繼續打開更多結果活動。我試圖通過每次按下結果活動中的START按鈕時調用finish()來解決這個問題。這會起作用,但會導致屏幕短暫地回到主要活動,然後一旦再次收集所有數據,就會返回結果活動。我想繼續留在結果活動中,只看圖表的變化。如何從另一個活動調用onClick方法的按鈕
1.)我不相信它的良好實踐有靜態函數/變量。有沒有更好的方法從其他活動調用此START方法?
2.)關於如何關閉結果活動以避免重複但保持屏幕在活動之間來回切換的任何建議。從主要活動
START方法:
public static void start_sweep(View view) {
try{
System.out.println("in start_sweep");
What_Button = 0;
start_freq = Double.parseDouble(start_freq_input.getText().toString());
stop_freq = Double.parseDouble(stop_freq_input.getText().toString());;
step_size = Double.parseDouble(step_size_input.getText().toString());;
System.out.println(start_freq + " " + stop_freq + " " + step_size);
short steps = (short) Math.round((stop_freq-start_freq)/step_size);
_steps = (short) (steps + 1);
gain = new double[_steps];
phase = new double[_steps];
int FTW_step = (int) (Math.round(step_size/CLK_freq*Math.pow(2, 32)));
int FTW_start = (int) (Math.round(start_freq/CLK_freq*Math.pow(2, 32)));
WriterThread wt = new WriterThread(mConnectThread.mmOutStream, steps, FTW_step, FTW_start);
wt.start();
start.setEnabled(false);
NextBtn.setEnabled(true);
NextBtn.setImageResource(R.drawable.next_enabled);
//Display state in "status" textview
output.setText("Collecting Data...");
}catch (Exception e){
e.printStackTrace();
output.setText("Please Enter Sweep Parameters");
}
}
方法稱爲在主要活動開始結果Actiivity:從結果活動
public void graphData() {
//Creat X-axis array then pass it to Results and interleave with gain and phase
X_axis = new double[_steps];
X_axis[0] = start_freq;
for (int i=1; i<_steps; i++) {
X_axis[i] = X_axis[i-1] + step_size;
}
//start Results activity after button is pressed to display graph
Intent intent = new Intent(this, Results.class);
intent.putExtra("gainData", gain);
intent.putExtra("phaseData", phase);
intent.putExtra("Xaxis", X_axis);
intent.putExtra("Battery Voltage", BatVolt);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
start.setEnabled(true);
}
START方法:
public void start_sweep2 (View view) {
MainActivity.start_sweep(view);
finish();
}