Android 如何从另一个活动调用按钮onClick方法

Android 如何从另一个活动调用按钮onClick方法,android,Android,我有两个活动,分别是Main和Results。在主界面中,我有一个开始按钮,它将用户输入的数据发送到蓝牙设备,从BT设备读回测量数据,处理数据,然后在结果活动中绘制数据图。在“结果”活动中,我希望有另一个执行完全相同功能的开始按钮,这样用户就不必一直切换屏幕来进行另一次测量。我在主活动中设置了START按钮,这样我就可以从结果活动中调用if。这似乎可行,但每次再次按下“开始”按钮时,它都会打开更多的结果活动。我试图通过每次按下“结果”活动中的“开始”按钮时调用finish()来解决这个问题。这是

我有两个活动,分别是Main和Results。在主界面中,我有一个开始按钮,它将用户输入的数据发送到蓝牙设备,从BT设备读回测量数据,处理数据,然后在结果活动中绘制数据图。在“结果”活动中,我希望有另一个执行完全相同功能的开始按钮,这样用户就不必一直切换屏幕来进行另一次测量。我在主活动中设置了START按钮,这样我就可以从结果活动中调用if。这似乎可行,但每次再次按下“开始”按钮时,它都会打开更多的结果活动。我试图通过每次按下“结果”活动中的“开始”按钮时调用finish()来解决这个问题。这是可行的,但会导致屏幕短暂地返回到主活动,然后在再次收集所有数据后返回到结果活动。我只想继续关注结果活动,只想看到图表的变化

1.)我不认为使用静态函数/变量是一种好的做法。是否有更好的方法从其他活动调用此START方法

2.)关于如何关闭“结果”活动以避免重复,但防止屏幕在活动之间快速来回变化的任何建议

从主活动启动方法:

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();
}