首页 > 解决方案 > android studio中的文本视图正在消失

问题描述

我在活动中的文本视图在configure设置后消失了

在此处输入图像描述

小文本192.168.0,是文本视图仅在我点击保存按钮时出现

在此处输入图像描述

当我回到这个活动时,textview 完全消失了

编辑:添加了我的 java 代码和我的 xml

package com.example.smartcharge;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Objects;

 public class configure extends AppCompatActivity {
    EditText ip, port;
    public TextView tv;
    Button SAVEBTN;
    SharedPreferences sharedPreferences;
    public static final String MyPREFERENCES = "MyPrefs";
    public static final String IPSTR = "ipKey";
    public static final String PORTSTR = "portKey";
    public static final String TEXT1 = "textkey";
    private String text1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_configure);
        Objects.requireNonNull(getSupportActionBar()).setDisplayShowTitleEnabled(false);

        ip = findViewById(R.id.et1);
        port = findViewById(R.id.et2);
        SAVEBTN = findViewById(R.id.savebtn);
        tv = findViewById(R.id.tv2);

      SAVEBTN.setOnClickListener(v -> {
          senddata();
      });
      loaddata();
      updateviews();
    }
    public  void senddata(){
        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(configure.this);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        String ipstr = ip.getText().toString();
        String portstr = port.getText().toString();
        tv.setText(ipstr + "," + portstr);
        editor.putString(IPSTR, ipstr);
        editor.putString(PORTSTR, portstr);
        editor.putString(TEXT1, tv.getText().toString());
        editor.apply();
        Toast.makeText(configure.this,"saved",Toast.LENGTH_LONG).show();

    }
    public  void loaddata(){
        sharedPreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
        text1 = sharedPreferences.getString(TEXT1 , "");
    }


    public void updateviews(){
        tv.setText(text1);



    }


 }

下面是我的配置活动的 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"
    tools:context=".configure">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Broker Settings"
        android:textSize="50sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.361"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.038" />

    <TextView
        android:id="@+id/tv2"
        android:layout_width="327dp"
        android:layout_height="49dp"
        android:text="TextView"
        android:textSize="20dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.309"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.247" />

    <Button
        android:id="@+id/savebtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/btns"
        android:text="save"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.08"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.572" />

    <EditText
        android:id="@+id/et2"
        android:layout_width="141dp"
        android:layout_height="wrap_content"
        android:backgroundTint="#D1D1D1"
        android:hint="port "
        android:inputType="number"
        android:textSize="25sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.096"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.444">

    </EditText>

    <EditText
        android:id="@+id/et1"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:backgroundTint="#D1D1D1"
        android:hint="ip Address"
        android:inputType="number"
        android:text="192.168.0."
        android:textSize="25sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.163"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.339">

    </EditText>


</androidx.constraintlayout.widget.ConstraintLayout>

有人对这种行为有任何线索吗?,如果可以的话,请帮助我:)

标签: javaandroidxmlandroid-studioandroid-layout

解决方案


由于您的 TextView 更新发生在 onCreate 中,因此文本消失了。

@Override
protected void onResume() {

SAVEBTN.setOnClickListener(v -> {
          senddata();
      });
      loaddata();
      updateviews();
}

这应该可以解决问题。浏览 Activity 生命周期,看看它是如何工作的。但基本上将方法移动到 onResume 应该可以工作。


推荐阅读