2016-11-26 103 views
0

我有三個按鈕「紅色」,「綠色」和「保存」和Textview。每當我按下「紅色」或「綠色」按鈕時,Textview背景顏色將會改變。當我按下「保存」按鈕時,我需要將更改的背景顏色保存到共享偏好設置。我需要打開一個活動獲取更改背景顏色。我怎樣才能做到這一點?共享首選項保存Textview背景

佈局/ activity_main

<?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="com.example.gela.myexampleeeeeeeeeeeee.MainActivity"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="save" 
     android:id="@+id/button_save" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="59dp" 
     android:onClick="onClick" /> 

    <TextView 
     android:layout_width="150dp" 
     android:layout_height="100dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Large Text" 
     android:id="@+id/textView" 
     android:background="@drawable/red" 
     android:gravity="center" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="red" 
     android:id="@+id/button_red" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="31dp" 
     android:onClick="onClick" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="green" 
     android:id="@+id/button_green" 
     android:layout_alignBottom="@+id/button_red" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:onClick="onClick" /> 
</RelativeLayout> 

MainActivity.java

import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

    Button button_save, button_red, button_green; 
    TextView textView; 

    private SharedPreferences prefs; 

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

     button_save = (Button)findViewById(R.id.button_save); 
     button_red = (Button)findViewById(R.id.button_red); 
     button_green = (Button)findViewById(R.id.button_green); 
     textView = (TextView)findViewById(R.id.textView); 

     prefs = getPreferences(MODE_PRIVATE); 

     // what code for this? 

    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()){ 
      case R.id.button_red: 
       textView.setBackgroundResource(R.drawable.red); 
       break; 
      case R.id.button_green: 
       textView.setBackgroundResource(R.drawable.green); 
       break; 
      case R.id.button_save: 
       prefs = getPreferences(MODE_PRIVATE); 
       SharedPreferences.Editor editor = prefs.edit(); 

       //what code for this? 


       break; 

     } 
    } 
} 

image

繪製/紅色

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="false"> 
     <shape android:shape="rectangle"> 
      <gradient android:startColor="#FF4081" android:centerColor="#FF4081" android:endColor="#FF4081"/> 
      <corners android:bottomLeftRadius="50dp" android:bottomRightRadius="50dp" android:topLeftRadius="50dp" android:topRightRadius="50dp"/> 
      <stroke android:width="2dp" android:color="#ffffff" /> 
      <padding android:left="15dp" android:top="2dp" android:right="15dp" android:bottom="2dp"/> 
     </shape> 
    </item> 
    <item android:state_pressed="true"> 
     <shape android:shape="rectangle"> 
      <gradient android:startColor="#4D000000" android:centerColor="#4D000000" android:endColor="#4D000000"/> 
      <corners android:bottomLeftRadius="50dp" android:bottomRightRadius="50dp" android:topLeftRadius="50dp" android:topRightRadius="50dp"/> 
      <stroke android:width="2dp" android:color="#ffffff" /> 
      <padding android:left="15dp" android:top="2dp" android:right="15dp" android:bottom="2dp"/> 
     </shape> 
    </item> 

</selector> 

繪製/綠色

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="false"> 
     <shape android:shape="rectangle"> 
      <gradient android:startColor="#00e676" android:centerColor="#00e676" android:endColor="#00e676"/> 
      <corners android:bottomLeftRadius="50dp" android:bottomRightRadius="50dp" android:topLeftRadius="50dp" android:topRightRadius="50dp"/> 
      <stroke android:width="2dp" android:color="#ffffff" /> 
      <padding android:left="15dp" android:top="2dp" android:right="15dp" android:bottom="2dp"/> 
     </shape> 
    </item> 
    <item android:state_pressed="true"> 
     <shape android:shape="rectangle"> 
      <gradient android:startColor="#4D000000" android:centerColor="#4D000000" android:endColor="#4D000000"/> 
      <corners android:bottomLeftRadius="50dp" android:bottomRightRadius="50dp" android:topLeftRadius="50dp" android:topRightRadius="50dp"/> 
      <stroke android:width="2dp" android:color="#ffffff" /> 
      <padding android:left="15dp" android:top="2dp" android:right="15dp" android:bottom="2dp"/> 
     </shape> 
    </item> 

</selector> 
+0

在問題中增加了更多的清晰度 – wizzardz

回答

0
public String StoreData(String yourKey, String colorName) 
    { 
     SharedPreferences sharedPref = context.getSharedPreferences("yourFileName", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPref.edit(); 
     editor.putString(yourKey, colorName); 
     editor.commit(); 
    } 

    public String SaveData(String keyThatYouUsedToStore) 
    { 
     SharedPreferences sharedPref = context.getSharedPreferences("yourFileName",Context.MODE_PRIVATE); 
     return sharedPref.getString(keyThatYouUsedToStore, "No String found!"); 
    } 

首先的 - 不存儲繪製。由於您的drawable在運行時似乎沒有更改,因此存儲該內容將是一個矯枉過正的行爲。

取而代之,在我的示例中,您將該名稱存儲在顏色的字符串中。根據存儲和返回的字符串,您可以綁定適當的資源。你可以存儲一個整數的資源(即R.id.button_red),但是這需要單獨的研究,因爲存儲普通的R.id.button_red將是不可靠的。