如何从我的设置 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
?
获取值
我目前正在为 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
?