I am stuck for a few hours and can’t find a solution (at least not for my level) that works, so I am asking for your help. Again. I am trying to save some values given by a user from EditText boxes to SharedPreferences. For some reason, instead of : 1, 5 or whatever value I input, I receive this values :
view:androidx.appcompat.widget.AppCompatEditText{b869139 VFED..CL. .F....ID 52,0-247,136 #7f0800a1 app:id/etTigPeZi}
The same java code is used in other app and works just fine. For some reason here doesn’t.
I tryied to search for any mistakes I could have made but, well, I didn’t find any.
Please have a look and if you can SAVE ME !
Thank you.
Wish you all a Happy New Year, btw.
Best regards,
R.P.
In Logcat, Verbose :
2020-12-31 00:46:31.030 28160-28160/ro.pfeilmayer.since_stoppedsmoking D/InputMethodManager: showSoftInput fail, mServedView:DecorView@d9c9e35[Settings] view:androidx.appcompat.widget.AppCompatEditText{b869139 VFED..CL. .F....ID 52,0-247,136 #7f0800a1 app:id/etTigPeZi} 2020-12-31 00:46:31.040 28160-28160/ro.pfeilmayer.since_stoppedsmoking D/InputMethodManager: showSoftInput fail, mServedView:DecorView@d9c9e35[Settings] view:androidx.appcompat.widget.AppCompatEditText{97bf0df VFED..CL. .F....ID 82,160-217,296 #7f0800a0 app:id/etTigInPachet} 2020-12-31 00:46:31.060 28160-28160/ro.pfeilmayer.since_stoppedsmoking D/InputMethodManager: showSoftInput fail, mServedView:DecorView@d9c9e35[Settings] view:androidx.appcompat.widget.AppCompatEditText{8a3b12c VFED..CL. .F....ID 0,320-300,456 #7f08009f app:id/etCostPer
My XML :
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/gradient_orange_red" tools:context=".Settings"> <LinearLayout android:id="@+id/linearLayout3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#fff" android:gravity="center" android:orientation="vertical" app:layout_constraintBottom_toTopOf="@+id/imageView5" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/linearLayout4"> <TextView android:id="@+id/showTheDateSetted" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:gravity="center" android:hint="the day you quit" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/buttonSetTheDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:text="change" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/showTheDateSetted" /> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="32dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/buttonSetTheDate"> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="4dp" android:layout_weight="2" android:gravity="end" android:orientation="vertical"> <TextView android:id="@+id/tvTigPeZi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="32dp" android:text="Smoked daily : " /> <TextView android:id="@+id/tvTigInPachet" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="32dp" android:text="Cigarettes/Pack : " /> <TextView android:id="@+id/tvCostPerPachet" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Cost/Pack : " /> </LinearLayout> <LinearLayout android:id="@+id/ValLayoutReset" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <EditText android:id="@+id/etTigPeZi" android:layout_width="65dp" android:layout_height="wrap_content" android:ems="1" android:gravity="center" android:hint="12" android:inputType="number" android:selectAllOnFocus="true" android:textCursorDrawable="@null" /> <EditText android:id="@+id/etTigInPachet" android:layout_width="45dp" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:ems="1" android:gravity="center" android:hint="20" android:inputType="number" android:selectAllOnFocus="true" android:textCursorDrawable="@null" app:layout_constraintBottom_toTopOf="@+id/editTextNumberDecimal2" app:layout_constraintTop_toBottomOf="@+id/editTextNumber" app:layout_constraintVertical_bias="0.0" /> <EditText android:id="@+id/etCostPerPachet" android:layout_width="100dp" android:layout_height="wrap_content" android:ems="1" android:gravity="center" android:hint="7.58" android:inputType="numberDecimal" android:selectAllOnFocus="true" android:textCursorDrawable="@null" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/tvTigPeZiSuffix" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:layout_marginBottom="32dp" android:text=" cigarettes" /> <TextView android:id="@+id/tvTigInPachetSuffix" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:layout_marginBottom="32dp" android:text=" pcs" /> <TextView android:id="@+id/tvCostPerPachetSuffix" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:text=" currency" /> </LinearLayout> </LinearLayout> <Button android:id="@+id/buttonSaveAll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="Apply" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/linearLayout2" /> </androidx.constraintlayout.widget.ConstraintLayout> </LinearLayout> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/floatingABBack" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:layout_marginBottom="16dp" android:clickable="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toEndOf="@+id/imageView5" app:srcCompat="@drawable/abc_vector_test" /> <LinearLayout android:id="@+id/linearLayout4" android:layout_width="411dp" android:layout_height="wrap_content" android:background="#fff" android:gravity="center" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <ImageView android:id="@+id/imageView4" android:layout_width="125dp" android:layout_height="125dp" android:layout_marginTop="8dp" android:layout_marginBottom="10dp" app:layout_constraintBottom_toTopOf="@+id/linearLayout3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.186" app:srcCompat="@drawable/sicestoppedsmokig512x512" /> </LinearLayout> <ImageView android:id="@+id/imageView5" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_marginBottom="16dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:srcCompat="@drawable/newbottom_devlogo_bk" /> </androidx.constraintlayout.widget.ConstraintLayout>
My java :
import androidx.appcompat.app.AppCompatActivity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.text.format.DateFormat; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.google.android.material.floatingactionbutton.FloatingActionButton; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit; public class Settings extends AppCompatActivity { SharedPreferences preferences; float x1, x2, y1, y2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); preferences = getSharedPreferences("settings_values", MODE_PRIVATE); SharedPreferences settings = getSharedPreferences("settings_values", 0); TextView showDateResult = findViewById(R.id.showTheDateSetted); if (settings.getString("Date", null) == null) { handleDateButton(); } else { String quitDateMem = preferences.getString("Date", ""); showDateResult.setText("You quit smoking on : " + quitDateMem); } Button mButton = findViewById(R.id.buttonSetTheDate); //Hide Title Bar ! getSupportActionBar().hide(); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { handleDateButton(); } }); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.floatingABBack); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); //Verificam data exista serati utilizator legat de fumat, daca nu, punem default //Luam din memorie setarile fumatorului si le afisam in textview String savedTigPeZi = preferences.getString("TigariZilnice", null); EditText tvEdTigPeZi = findViewById(R.id.etTigPeZi); tvEdTigPeZi.setText(savedTigPeZi); String savedTigPePachet = preferences.getString("TigariPerPachet", null); EditText tvEdTigPePachet = findViewById(R.id.etTigInPachet); tvEdTigPePachet.setText(savedTigPePachet); String savedCostPachet = preferences.getString("CostPachet", null); EditText tvEdCostPachet = findViewById(R.id.etCostPerPachet); tvEdCostPachet.setText(savedCostPachet); //Setari tigari pe zi, cost per pachet, continut pachet si definit campuri //Salvare date introduce in campurile de mai sus findViewById(R.id.buttonSaveAll) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(Settings.this); builder.setTitle("Save settings"); builder.setMessage("Are you sure ?"); builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // Do nothing but close the dialog EditText etTigariPeZi = findViewById(R.id.etTigPeZi); if (etTigariPeZi.getText().toString().length() == 0) etTigariPeZi.setError("Valid number is required !"); else { String stringTigariPeZi = etTigariPeZi.toString(); SharedPreferences.Editor editorPezi = settings.edit(); editorPezi.putString("TigariZilnice", stringTigariPeZi); editorPezi.apply(); String saveTigariZilnice = preferences.getString("TigariZilnice", null); etTigariPeZi.setText(saveTigariZilnice); etTigariPeZi.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(etTigariPeZi, InputMethodManager.SHOW_IMPLICIT); imm.hideSoftInputFromWindow(etTigariPeZi.getWindowToken(), 0); } EditText etTigariIntrunPachet = findViewById(R.id.etTigInPachet); if (etTigariIntrunPachet.getText().toString().length() == 0) etTigariIntrunPachet.setError("Valid number is required !"); else { String stringTigariIntrunPachet = etTigariIntrunPachet.toString(); SharedPreferences.Editor editorInPachet = settings.edit(); editorInPachet.putString("TigariPerPachet", stringTigariIntrunPachet); editorInPachet.apply(); String saveTigariPerPachet = preferences.getString("TigariPerPachet", null); etTigariIntrunPachet.setText(saveTigariPerPachet); etTigariIntrunPachet.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(etTigariIntrunPachet, InputMethodManager.SHOW_IMPLICIT); imm.hideSoftInputFromWindow(etTigariIntrunPachet.getWindowToken(), 0); } EditText etCostPachet = findViewById(R.id.etCostPerPachet); if (etCostPachet.getText().toString().length() == 0) etCostPachet.setError("Valid number is required !"); else { String stringCostPachet = etCostPachet.toString(); SharedPreferences.Editor editorCostPachet = settings.edit(); editorCostPachet.putString("CostPachet", stringCostPachet); editorCostPachet.apply(); Context context = getApplicationContext(); Toast.makeText(context, "New configuration was SAVED !", Toast.LENGTH_LONG).show(); String saveCostPachet = preferences.getString("CostPachet", null); etCostPachet.setText(saveCostPachet); etCostPachet.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(etCostPachet, InputMethodManager.SHOW_IMPLICIT); imm.hideSoftInputFromWindow(etCostPachet.getWindowToken(), 0); } dialog.dismiss(); } }); builder.setNegativeButton("No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // Do nothing dialog.dismiss(); } }); AlertDialog alert = builder.create(); alert.show(); } }); } private void handleDateButton() { Calendar calendar = Calendar.getInstance(); preferences = getSharedPreferences("settings_values", MODE_PRIVATE); SharedPreferences settings = getSharedPreferences("settings_values", 0); int an = calendar.get(Calendar.YEAR); int luna = calendar.get(Calendar.MONTH); int zi = calendar.get(Calendar.DATE); DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { TextView showDateResult = findViewById(R.id.showTheDateSetted); Calendar calendarFormatted = Calendar.getInstance(); calendarFormatted.set(Calendar.YEAR, year); calendarFormatted.set(Calendar.MONTH, month); calendarFormatted.set(Calendar.DATE, dayOfMonth); CharSequence dateCharSequence = DateFormat.format("dd MM yyyy", calendarFormatted); showDateResult.setText("You quit smoking on : " + dateCharSequence); SharedPreferences.Editor editor = settings.edit(); String prefData = dateCharSequence.toString(); SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy"); Date date = new Date(); String secondDate = myFormat.format(date); //azi try { Date startDate = myFormat.parse(prefData); Date endDate = myFormat.parse(secondDate); long diff = endDate.getTime() - startDate.getTime(); if (diff < 0) { editor.putString("Date", secondDate); editor.apply(); showDateResult.setText("You quit smoking on : " + secondDate); Context context = getApplicationContext(); Toast.makeText(context, "Can't be in the future", Toast.LENGTH_SHORT).show(); } else { editor.putString("Date", prefData); editor.apply(); } } catch (ParseException e) { e.printStackTrace(); } } }, an, luna, zi); datePickerDialog.show(); } public boolean onTouchEvent(MotionEvent touchevent) { switch (touchevent.getAction()) { case MotionEvent.ACTION_DOWN: x1 = touchevent.getX(); y1 = touchevent.getY(); break; case MotionEvent.ACTION_UP: ; x2 = touchevent.getX(); y2 = touchevent.getY(); if (x1 < x2) { Intent i = new Intent(Settings.this, MainActivity.class); startActivity(i); } break; } return false; } }```
Advertisement
Answer
TO get the string in an EditText you use editText.getText() not editText.toString(). The first gets the text entered by the user (or your app). The second gets a string representation of the edit text object.