【问题标题】:how to save and remember UI state of an activity while application is open如何在应用程序打开时保存和记住活动的 UI 状态
【发布时间】:2021-07-02 06:23:18
【问题描述】:

我的活动中有一个CardView,它有一个关闭按钮。当我单击关闭按钮时,CardView 会关闭,但是当我回到活动时,CardView 会再次显示。
我希望 CardView 在我退出或关闭应用程序之前不显示。

activity_detail.xml

    <androidx.cardview.widget.CardView
        android:id="@+id/cardview_ad"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.25"
        app:cardCornerRadius="12dp"
        app:cardElevation="4dp"
        app:cardPreventCornerOverlap="true"
        app:cardUseCompatPadding="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="end"
            android:orientation="horizontal"
            android:paddingHorizontal="9dp"
            android:paddingVertical="6dp">

            <TextView
                android:id="@+id/textview_ad_icon"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:fontFamily="@font/fa_solid"
                android:padding="3dp"
                android:paddingStart="4dp"
                android:paddingEnd="0dp"
                android:text="@string/fa_bullhorn_ad"
                android:textColor="#636363"
                android:textSize="19sp" />

            <TextView
                android:id="@+id/textview_ads"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="9"
                android:fontFamily="@font/google_sans"
                android:padding="3dp"
                android:paddingStart="1dp"
                android:paddingEnd="4dp"
                android:text="Ads"
                android:textColor="#636363"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/textview_btn_close_ad"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="?attr/selectableItemBackgroundBorderless"
                android:clickable="true"
                android:focusable="true"
                android:fontFamily="@font/fa_solid"
                android:gravity="end"
                android:padding="2dp"
                android:text="@string/fa_times_circle_close"
                android:textColor="#79636363"
                android:textSize="28sp" />

        </LinearLayout>

        <View
            android:id="@+id/divider_ad"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginTop="44dp"
            android:background="?android:attr/listDivider" />


    </androidx.cardview.widget.CardView>

DetailActivity.java

public class DetailActivity extends AppCompatActivity {

    TextView textViewBtnCloseAd;
    CardView cardViewAd;

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

        // view reference
        textViewBtnCloseAd = findViewById(R.id.textview_btn_close_ad);
        cardViewAd = findViewById(R.id.cardview_ad);


        // close the ad panel
        textViewBtnCloseAd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                cardViewAd.setVisibility(View.GONE);
            }
        });

    }

}

非常感谢您的帮助。
谢谢!

【问题讨论】:

    标签: java android android-cardview


    【解决方案1】:

    尝试将关闭状态(布尔值)保存在静态变量中,该变量可以在 Application 或 util 类中定义,并根据 DetailActivity onCreate 时从静态变量获取的关闭状态设置您的 cardViewAd 可见性。默认状态可能为真。重新打开应用程序后,关闭状态将重置为 true。

    【讨论】:

    • 你能用一些代码sn-ps告诉我吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多