繁体   English   中英

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

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

我目前正在为 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);
}

在我的设置活动中,我有一个标准的首选项屏幕,我想在其中显示更改MainActivity媒体记录器的音频编解码器、采样率等的选项。

我如何从MainActivity访问setAudioSettings方法才能这样做?

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

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

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关键字的更多信息。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM