Android 如何从另一个活动调用按钮onClick方法
我有两个活动,分别是Main和Results。在主界面中,我有一个开始按钮,它将用户输入的数据发送到蓝牙设备,从BT设备读回测量数据,处理数据,然后在结果活动中绘制数据图。在“结果”活动中,我希望有另一个执行完全相同功能的开始按钮,这样用户就不必一直切换屏幕来进行另一次测量。我在主活动中设置了START按钮,这样我就可以从结果活动中调用if。这似乎可行,但每次再次按下“开始”按钮时,它都会打开更多的结果活动。我试图通过每次按下“结果”活动中的“开始”按钮时调用finish()来解决这个问题。这是可行的,但会导致屏幕短暂地返回到主活动,然后在再次收集所有数据后返回到结果活动。我只想继续关注结果活动,只想看到图表的变化 1.)我不认为使用静态函数/变量是一种好的做法。是否有更好的方法从其他活动调用此START方法 2.)关于如何关闭“结果”活动以避免重复,但防止屏幕在活动之间快速来回变化的任何建议 从主活动启动方法:Android 如何从另一个活动调用按钮onClick方法,android,Android,我有两个活动,分别是Main和Results。在主界面中,我有一个开始按钮,它将用户输入的数据发送到蓝牙设备,从BT设备读回测量数据,处理数据,然后在结果活动中绘制数据图。在“结果”活动中,我希望有另一个执行完全相同功能的开始按钮,这样用户就不必一直切换屏幕来进行另一次测量。我在主活动中设置了START按钮,这样我就可以从结果活动中调用if。这似乎可行,但每次再次按下“开始”按钮时,它都会打开更多的结果活动。我试图通过每次按下“结果”活动中的“开始”按钮时调用finish()来解决这个问题。这是
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");
}
}
在主活动中调用的方法以启动结果活动:
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);
}
将MainActivity(如上下文)传递给ResultsActivity,以便它调用上一屏幕的sweep方法,而不仅仅是来自新MainActivity的sweep方法(现在就是这样)1:使用静态函数没有任何问题,但此函数应返回一些数据,这些数据可用于更新活动中的视图,不要在静态函数中传递视图 2:在这些活动中的任何一个活动中或在一个单独的类中编写静态函数,并使用类名直接调用它,使用函数的结果更新视图
public void start_sweep2 (View view) {
MainActivity.start_sweep(view);
finish();
}