如何在 Android Studio 的所有页面中保存一项功能(即 SFX 或音乐等设置)?

Posted

技术标签:

【中文标题】如何在 Android Studio 的所有页面中保存一项功能(即 SFX 或音乐等设置)?【英文标题】:How to save a feature (i.e. setting like SFX or Music) across all pages in Android Studio? 【发布时间】:2019-03-04 22:06:12 【问题描述】:

我想知道如何在 android Studio 中在所有页面之间切换时保存所有页面的功能。

我正在尝试制作一个经过操纵的掷骰子应用程序,我希望在我将其关闭之前,我希望该设置与应用程序保持一致。

我想要保存设置的页面的当前代码:

    @Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



public void showToast(View view) 
    Toast toast = Toast.makeText(this, "You've switched a switch", Toast.LENGTH_SHORT);
    toast.show();



public void changeHomeScreen(View view) 
    startActivity(new Intent(getApplicationContext(), HomeScreen.class));

public void trollMode (View view)
    Switch s = findViewById(R.id.switch3);
    ImageView i = findViewById(R.id.imageView2);
    Button a = findViewById(R.id.button4);
    Button b = findViewById(R.id.button7);
    Button c = findViewById(R.id.button8);
    Button d = findViewById(R.id.button9);
    Button e = findViewById(R.id.button10);
    Button f = findViewById(R.id.button11);

    a.setVisibility(View.INVISIBLE);
    b.setVisibility(View.INVISIBLE);
    c.setVisibility(View.INVISIBLE);
    d.setVisibility(View.INVISIBLE);
    e.setVisibility(View.INVISIBLE);
    f.setVisibility(View.INVISIBLE);
    if (s.isChecked())
        i.setImageResource(R.drawable.trollface);
        Toast toast = Toast.makeText(this, "You have ENABLED Troll Mode!", Toast.LENGTH_SHORT);
        toast.show();
        MediaPlayer myAudio = MediaPlayer.create(MainActivity.this, R.raw.evillaugh);
        myAudio.start();
     else 
        i.setImageResource(R.drawable.dices);
        Toast toast = Toast.makeText(this, "You have DISABLED Troll Mode", Toast.LENGTH_SHORT);
        toast.show();
    
 
    @Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



public void showToast(View view) 
    Toast toast = Toast.makeText(this, "You've switched a switch", Toast.LENGTH_SHORT);
    toast.show();



public void changeHomeScreen(View view) 
    startActivity(new Intent(getApplicationContext(), HomeScreen.class));

public void trollMode (View view)
    Switch s = findViewById(R.id.switch3);
    ImageView i = findViewById(R.id.imageView2);
    Button a = findViewById(R.id.button4);
    Button b = findViewById(R.id.button7);
    Button c = findViewById(R.id.button8);
    Button d = findViewById(R.id.button9);
    Button e = findViewById(R.id.button10);
    Button f = findViewById(R.id.button11);

    a.setVisibility(View.INVISIBLE);
    b.setVisibility(View.INVISIBLE);
    c.setVisibility(View.INVISIBLE);
    d.setVisibility(View.INVISIBLE);
    e.setVisibility(View.INVISIBLE);
    f.setVisibility(View.INVISIBLE);
    if (s.isChecked())
        i.setImageResource(R.drawable.trollface);
        Toast toast = Toast.makeText(this, "You have ENABLED Troll Mode!", Toast.LENGTH_SHORT);
        toast.show();
        MediaPlayer myAudio = MediaPlayer.create(MainActivity.this, R.raw.evillaugh);
        myAudio.start();
     else 
        i.setImageResource(R.drawable.dices);
        Toast toast = Toast.makeText(this, "You have DISABLED Troll Mode", Toast.LENGTH_SHORT);
        toast.show();
   
 

这是用于调用我的方法的名为“Troll Mode”的开关。我希望,当它打开时,让按钮出现,然后当你点击这些按钮时,我希望它把你重新路由到我的主页。当您在巨魔模式打开时在主页上掷骰子时,它只会显示您选择的数字,而不会显示其他任何内容,直到您关闭巨魔模式。

如果有人需要有关该问题的更多信息,我很乐意尽我所能为您提供所需的信息。

【问题讨论】:

【参考方案1】:

我正在尝试制作一个经过操纵的掷骰子应用程序,我希望在我将其关闭之前,我希望该设置与应用程序保持一致。

使用SharedPreferences 存储设置。

有关如何使用SharedPreferences 的指南,请参阅the training documentation。

如果您想向用户公开设置,请使用PreferenceFragment。

【讨论】:

我应该为 SharedPreferences 使用的确切代码是什么。它太深入了,我只有几天的时间来弄清楚。 我添加了一个指向培训文档的链接,向您展示如何使用代码。如果这还不够,您应该可以在 Google for SharedPreferences 中找到大量示例。 我正在使用这段代码,它完全搞砸了TextView t = findViewById(R.id.textView2); ImageView v = findViewById(R.id.imageView); Intent i = getIntent(); Bundle b = i.getExtras(); assert b != null; receivedCheckValue = b.getBoolean(MainActivity.CHECK_YES_OR_NO); if (b != null) newString = null; else if(receivedCheckValue == true) myRandInt = 1; t.setText("Your Number is 1"); v.setImageResource(R.drawable.diceone); 它有什么问题吗? 1) 您应该使用格式正确的代码更新您的问题以提高可读性。添加代码作为注释几乎是不可能阅读的。 2)当你更新你的问题时,添加比“它完全搞砸了”更多的细节。解释你的问题,就像你在和一个 5 岁的孩子说话一样。 ***.com/help/how-to-ask

以上是关于如何在 Android Studio 的所有页面中保存一项功能(即 SFX 或音乐等设置)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在所有活动中使用Android Studio默认导航抽屉[重复]

当用户切换到 Android Studio Kotlin 中的其他页面时,如何停止播放音乐?

如何优化 Android Studio 中所有文件的导入

如何在Android Studio的活动底部制作Android xml Linearlayout?

如何一次将屏幕方向应用于纵向所有布局 android studio

如何在 Android Studio IDE 中找到我项目中所有未使用的方法?