android - 如何在首次和后续应用程序使用时呈现不同的 UI?

标签 android user-interface sharedpreferences

我有一个带有微调器、两个复选框和一个提交按钮的简单安卓页面。屏幕的java代码如下:

import android.content.Context;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Intent;
import org.json.JSONException;
import org.json.JSONObject;


public class Main extends AppCompatActivity implements View.OnClickListener{

    private Button submit;
    private Button edit;

    Spinner place;
    private CheckBox male;
    private CheckBox female;

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

        submit = (Button) findViewById(R.id.btn_submit);
        submit.setOnClickListener(this);

        edit = (Button) findViewById(R.id.btn_edit);
        edit.setVisibility(View.GONE);

        place = (Spinner) findViewById(R.id.place);
        place.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> adapter, View v,
                                       int position, long id) {
                // On selecting a spinner item
                String item = adapter.getItemAtPosition(position).toString();
                str_specimen = item;
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

        male = (CheckBox) findViewById(R.id.male);
        male.setChecked(false);
        female = (CheckBox) findViewById(R.id.female);
        female.setChecked(false);

        submit.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Main.this,
                        home.class);
                startActivity(intent);
            }
        });
    }
}

我有一个最初不可见的编辑按钮。当我从微调器中选择一个值并在复选框中选中一个值并单击提交按钮时。这些值被发送到数据库,主页 页面将启动。

我想要做的是,当我再次访问主页时,我希望之前选择的值出现并且微调器和复选框不应该是可点击的,编辑按钮应该出现。如果我点击编辑按钮,微调器和复选框应该是可点击的,我应该能够再次提交。

有人能告诉我怎么做吗?

最佳答案

有一个方法,比如 isFirstVisit(),如果这是用户第一次参与该 Activity ,它会返回一个 bool 值:

private boolean isFirstVisit() {
    SharedPreferences prefs = getApplicationContext().getSharedPreferences("settings", Context.MODE_PRIVATE);
    return prefs.getBoolean("IsFirstVisit", true);
}

在开始调整 UI 之前调用它,然后根据它的值显示/隐藏/选中/取消选中/启用/禁用各种 UI 元素:

boolean firstTime = isFirstVisit();

edit = (Button) findViewById(R.id.btn_edit);
if(firstTime) {        
    edit.setVisibility(View.GONE);
}

完成后不要忘记将 IsFirstVisit 设置为 false:

SharedPreferences prefs = getApplicationContext().getSharedPreferences("settings", Context.MODE_PRIVATE);
SharedPreferences.Editor ed = prefs.edit();
ed.putBoolean("IsFirstVisit", false);
ed.commit();

关于android - 如何在首次和后续应用程序使用时呈现不同的 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36384363/

相关文章:

java - 在 GUI 中使用预定义的字符串

java - 如何让我的主题以编程方式转移到其他 Activity 中?

android - 检查 ssharedpreference 中是否存在列表项

android - 设置新的 Facebook 应用程序

android - 在 Android 中使用 appCompat 时,Menu 和 MenuItem 的正确导入是什么?

c - 文本隐写 C 程序的 GUI

c - 使用 wordwrap 2 的最佳消息框大小

android - sw320dp 布局 block xlarge 布局

java - Retrofit登录后无法获取数据

java - 构造函数 Intent(DataCountUtilities, Class<DataCountService>) 未定义