如何在“设置”活动的“主要活动”中访问方法?

我目前正在为Android开发录音机应用。我试图通过“设置”活动访问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);
}

在我的“设置”活动中,I have a standard preferences screen希望显示用于更改Mainactivity中媒体记录器的音频编解码器,采样率等的选项。

如何在此处从setaudioSettings访问Mainactivity方法呢?

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

huihuiitsme 回答:如何在“设置”活动的“主要活动”中访问方法?

将该方法设为静态,以便您无需创建类对象即可调用

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

以这种方式调用您的方法:

MainActivity.yourMethod();
,

简短的回答是,您不应将一个活动的功能用于另一活动。

对于您的情况,建议您使用一个单例对象或共享首选项来存储设置屏幕的数据。然后在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也必须是静态的。

以后您可以通过以下任何方式在任何活动中调用此方法:

MainActivity.setAudioSettings();

您可以了解有关static关键字的更多信息,例如here

但是,我不确定使用静态方法是解决您的问题的最佳解决方案,也许最好在SharedPreferences中将SettingActivity设置为onResume()您的MainActivity调用setAudioSettings()方法并从SharedPreferences那里获取值?

本文链接:https://www.f2er.com/2639008.html

大家都在问