2017-01-15 8 views
0

привет всем первым, что я искал ответ весь день для этого, и я не знаю ничего, я пытаюсь сохранить простую вещь, мне нужно сохранить цвет фона и «точки», что пользователь pres на button я объясню, что пользователю нужно нажать button, который изменит background color и после button, что increse textview +1.SharedPreferences как сохранить текстовый вид и цвет bg

после того как я закрыть приложение и вернуться я хочу, что приложение будет показывать последний цвет фона, который выбрал пользователь, и как, много раз +1 button была нажата:

вот код: XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    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.hanansanag.colorbeck.MainActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="home work :)" 
     android:layout_gravity="center" 
     android:textSize="20sp" 
     android:textStyle="bold"/> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:orientation="horizontal"> 


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="change bg :" 
     android:textStyle="bold" 
     android:textSize="15sp" 
     android:id="@+id/Tv2" 
     android:textAllCaps="false"/> 
     <Button 
      android:layout_width="80dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="10dp" 
      android:id="@+id/cred" 
      android:text="red" 
      android:background="@drawable/redbutton" 
      android:textAllCaps="false"/> 
     <Button 
      android:layout_width="80dp" 
      android:layout_height="50dp" 
      android:text="green" 
      android:id="@+id/cgreen" 
      android:layout_marginLeft="10dp" 
      android:background="@drawable/greenbtm" 
      android:textAllCaps="false"/> 
     <Button 
      android:layout_width="80dp" 
      android:layout_height="50dp" 
      android:background="@drawable/blue222" 
      android:id="@+id/cblue" 
      android:layout_marginLeft="10dp" 
      android:text="blue" 
      android:textAllCaps="false"/> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <Button 
      android:layout_width="70dp" 
      android:layout_height="70dp" 

      android:background="@drawable/easyyyyy" 
      android:id="@+id/btnadd"/> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="0" 
      android:id="@+id/tv" 
      android:textSize="20sp" 
      android:layout_marginLeft="70dp"/> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <Button 
      android:layout_width="70dp" 
      android:id="@+id/save" 
      android:layout_height="70dp" 
      android:layout_marginLeft="110dp" 
      android:background="@drawable/save"/> 
    </LinearLayout> 


</LinearLayout> 

и вот код Java:

package com.example.hanansanag.colorbeck; 

import android.content.SharedPreferences; 
import android.graphics.Color; 
import android.preference.PreferenceManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.Toast; 


public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
    private Button btnred,btngreen,btnblue,btnpluse,btnsave; 
    private LinearLayout mlinearLayout; 
    private TextView tv; 
    int point = 0; 
    public SharedPreferences sp; 
    private int progress; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     sp= getSharedPreferences("save",0); 
     String textValue = sp.getString("textvalue",""); 

     mlinearLayout=(LinearLayout)findViewById(R.id.activity_main); 

     btnred = (Button) findViewById(R.id.cred); 
     btnblue = (Button) findViewById(R.id.cblue); 
     btngreen = (Button) findViewById(R.id.cgreen); 
     btnpluse = (Button)findViewById(R.id.btnadd); 
     btnsave = (Button)findViewById(R.id.save); 
     tv=(TextView)findViewById(R.id.tv) ; 
     btnred.setOnClickListener(this); 
     btnsave.setOnClickListener(this); 
     btnpluse.setOnClickListener(this); 
     btnblue.setOnClickListener(this); 
     btngreen.setOnClickListener(this); 


     } 



    @Override 
    public void onClick(View v) { 
     if (btnred == v){ 
      mlinearLayout.setBackgroundColor(Color.RED); 

     } 
     else if (btngreen == v){ 
      mlinearLayout.setBackgroundColor(Color.GREEN); 
     } 
     else if (btnblue == v){ 
      mlinearLayout.setBackgroundColor(Color.BLUE); 

     } 
     else if (btnpluse== v){ 
      point++; 
      tv.setText("" + point); 

     } 
     else if (btnsave == v){ 
      Toast.makeText(this,"btn clickd",Toast.LENGTH_LONG).show(); 
      SharedPreferences.Editor editor = sp.edit(); 
      editor.putString("textValue",tv.getText().toString()); 
      editor.commit(); 
     } 
    } 
} 

как вы видите, я пытаюсь здесь SharedPreferences на Textview, но после того, как я закрыл и вернул, я ничего не вижу, я знаю, что я делаю что-то неправильно, но я не знаю, что. ти все за время и помощь

+0

Что вы хотите сохранить в sp? – W4R10CK

+0

@ W4R10CK как я говорю «afther i закрываю приложение и возвращаю, я хочу, чтобы приложение отобразило последний цвет bg, который пользователь выбрал, и как, uch время, нажатие кнопки« +1 »было нажато« –

ответ

0

изменить SharedPreference биты в btnsave для:

SharedPreferences.Editor editor = getSharedPreferences(save, MODE_PRIVATE).edit(); 
editor.putString("textValue",tv.getText().toString()); 
editor.commit(); 

И в OnCreate изменить SharedPreference биты в:

SharedPreferences prefs = getSharedPreferences(save, MODE_PRIVATE); 
String textValue= prefs.getString("textValue", "0"); 

И добавить этот код после того, как у вас есть объявленный tv как TextView.

tv.setText(textValue) 

В каждой кнопки для изменения цвета фона, поместить этот код и изменить переменную «цвет» в «синий», «красный» и т.д.

SharedPreferences.Editor editor = getSharedPreferences(saveColour, MODE_PRIVATE).edit(); 
editor.putString("colourValue",COLOUR); 
editor.commit(); 

Тогда на создание, назвать это:

SharedPreferences prefs = getSharedPreferences(saveColour, MODE_PRIVATE); 
String colourValue = prefs.getString("colourValue", WHITE); 

И после того, как вы объявили mLinearLayout:

mlinearLayout.setBackgroundColor(Color.colourValue); 
+0

ty для вашего времени, но его еще я закрываю приложение и возвращаю tv show 0 и befor i close i preas 7 раз на кнопке –

+0

Вы используете значение 0 в своей переменной «point», что означает, что при нажатии btwpluse просто добавляется 0 ?. Измените число от 0 до 1. –

+0

Кроме того, вы не показываете, что вы фактически меняете телевизор на переменную SharedPreference. Я изменил свой ответ, чтобы показать вам это. –