如何从我的设置 activity 中的 Main Activity 访问方法?

How can I access methods from my Main Activity in my Settings activity?

我目前正在为 Android 开发一个录音机应用程序。我正在尝试从我的设置 activity 访问我的 MainActivity 中的一些方法,以便更改我的 MediaRecorder.

的一些设置

我有下面的方法,可以在我的 MainActivity.

中设置录音的音频设置
// set up all audio settings
private void setAudioSettings() {
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
    mediaRecorder.setAudioSamplingRate(44100);
    mediaRecorder.setAudioEncodingBitRate(96000);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
}

在我的设置 activity、I have a standard preferences screen 中,我想在 MainActivity 中显示更改媒体记录器的音频编解码器、采样率等的选项。

如何才能从 MainActivity 访问 setAudioSettings 方法?

如果您需要查看更多代码或屏幕截图,请告诉我。

将该方法设为静态,这样您就可以在不创建 class 对象的情况下进行调用

public static void yourMethod(){
//Write your code here
}

然后像这样调用你的方法:

MainActivity.yourMethod();

保存设置,即共享首选项中的值,然后从 Main Activity 中的首选项中获取值。

简短的回答是你不应该将一个 activity 的功能用于另一个 activity。

对于您的情况,我建议您使用单例对象或共享首选项来存储设置屏幕的数据。然后在 MainActivity 的 onStart 中,读取单例对象或共享偏好并相应地调用 #setAudioSettings 方法。

您可以通过以下方式 static 制作您的方法:

  public static void setAudioSettings() {
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
    mediaRecorder.setAudioSamplingRate(44100);
    mediaRecorder.setAudioEncodingBitRate(96000);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
}

但要做到这一点 mediaRecorder 也需要是静态的。

稍后您可以通过以下方式从任何 activity 调用此方法:

MainActivity.setAudioSettings();

您可以详细了解 static 关键字,例如 here

但是,我不确定使用静态方法是否是解决您问题的最佳方法,也许在您的 SettingActivity 中设置 SharedPreferences 并稍后在 [=17= 中设置会更好] 的 MainActivity 调用 setAudioSettings() 方法并从 SharedPreferences?

获取值