[英]How to retain the dropdown and their selection after pressing back in browser
[英]How to retain an android app imageButton's onClick state after restarting, pressing back and changinging orientation
我正在制作一個可以遠程控制燈泡的應用程序。 因此,我要求該應用自動保存以前的狀態(變量,onlick按鈕等),並在我重新啟動該應用后恢復它。 例如,如果我按下燈泡(在我的代碼中,它會在單擊時更改圖片)並且圖片也會更改,因此當我關閉應用程序並重新打開它時,顯示的圖像應該更改為一張。
這是我的代碼
package room.bt4u.com.roomcontrol;
import android.media.MediaPlayer;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
public class MainActivity extends AppCompatActivity {
ImageButton ib;
MediaPlayer toggleSound;
ImageButton aButton,aButton2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toggleSound=MediaPlayer.create(this, R.raw.z);
aButton = (ImageButton) findViewById(R.id.imageButton);
aButton2 = (ImageButton) findViewById(R.id.imageButton2);
SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
Boolean c = sharedPreferences.getBoolean("clicked", false);
Boolean d = sharedPreferences.getBoolean("clicked2",false);
if(c) {
aButton.setImageResource(R.drawable.on);
}
else {
aButton.setImageResource(R.drawable.off);
}
if(d){
aButton2.setImageResource(R.drawable.on);
}
else {
aButton2.setImageResource(R.drawable.off);
}
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
public void buttonClick(View v) {
SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
Boolean c = sharedPreferences.getBoolean("clicked",false);
if (!c) {
aButton.setImageResource(R.drawable.on);
toggleSound.start();
sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("clicked", true);
editor.commit();
}
if(c){
aButton.setImageResource(R.drawable.off);
sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor = sharedPreferences.edit();
editor.putBoolean("clicked", false);
editor.commit();
toggleSound.start();
}
}
public void buttonClick2(View v) {
SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
Boolean d = sharedPreferences.getBoolean("clicked",false);
if (!d) {
aButton2.setImageResource(R.drawable.on);
toggleSound.start();
sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("clicked2", true);
editor.commit();
}
if(d){
aButton2.setImageResource(R.drawable.off);
sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor = sharedPreferences.edit();
editor.putBoolean("clicked2", false);
editor.commit();
toggleSound.start();
}
}
這是XML FILE
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="room.bt4u.com.roomcontrol.MainActivity"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ROOM NO. 1046"
android:textSize="45sp"
android:textStyle="bold"
android:layout_centerHorizontal="true"
android:textColor="#0786e7"
android:id="@+id/textView"
android:includeFontPadding="false"
android:gravity="center_horizontal"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:layout_below="@+id/textView"
android:src="@drawable/off"
android:layout_marginTop="35dp"
android:layout_alignParentLeft="true"
android:background="#01FFFFFF"
android:onClick="buttonClick"/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton2"
android:layout_alignTop="@+id/imageButton"
android:layout_below="@+id/textView"
android:src="@drawable/off"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="#01FFFFFF"
android:onClick="buttonClick2"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Swarnveer's"
android:id="@+id/textView2"
android:layout_below="@+id/imageButton"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="20dp"
android:textStyle="bold"
android:textColor="#f20606"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Sajal's"
android:id="@+id/textView3"
android:layout_below="@+id/imageButton2"
android:layout_alignRight="@+id/imageButton2"
android:layout_alignEnd="@+id/imageButton2"
android:layout_marginRight="35dp"
android:layout_marginEnd="35dp"
android:textStyle="bold"
android:textColor="#f20606"/>
</RelativeLayout>
您可以使用SharedPreferences:
請參閱此處以獲取相關信息:您可以使用SharedPreferences
在手機上保存少量設置數據。
在onPause()
,使用以下代碼:
SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
prefs.edit().putString("myKey", "myColorState").apply();
這樣,“ myColorState”的設置將保存在鍵“ myKey”下。
在onResume()
您可以使用
SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
String myColor = prefs.getString("myKey", "defaultValue");
這樣,您就可以擁有數據,並可以在活動中使用它們
如果您與燈泡之間沒有雙向通信,則將狀態保存到SharedPreferences
似乎是最好的方法。
您可以在Activity
或Fragment
生命周期方法( onConfigurationChanged()
, onResume()
, onStart()
)中從SharedPreferences
中檢索數據。
您可以使用SharedPref通過更改屏幕方向或按Backpress上的任何鍵來保存數據,也可以使用此鍵再次獲取該數據。
Try this:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toggleSound= MediaPlayer.create(this, R.raw.z);
SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
Boolean c = sharedPreferences.getBoolean("clicked");
if(c){
aButton.setImageResource(R.drawable.on);
}
else {
aButton.setImageResource(R.drawable.off);
}
}
public void buttonClick(View v) {
switch (choose){
case 1:ImageButton aButton = (ImageButton) v;
aButton.setImageResource(R.drawable.on);
toggleSound.start();
choose++;
SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("clicked", true);
editor.commit();
break;
case 2:ImageButton bButton = (ImageButton) v;
bButton.setImageResource(R.drawable.off);
SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("clicked", false);
editor.commit();
toggleSound.start();
choose--;
break;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.