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

问题描述 投票:0回答:4

我目前正在为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方法?

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

java android android-studio mediarecorder
4个回答
1
投票

将该方法设为静态,因此您可以在不创建类对象的情况下进行调用

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

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

MainActivity.yourMethod();

1
投票

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

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


0
投票

保存设置,即共享首选项中的值,然后从“主要活动”中的首选项中获取。


0
投票

您可以通过以下方式设置方法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调用SharedPreferencesSettingActivity中设置onResume(),然后再设置MainActivity ]方法并从setAudioSettings()那里获得值?

© www.soinside.com 2019 - 2024. All rights reserved.