android - 离开 Activity 后保留变量

标签 android

我正在尝试找到一种方法,让我的变量在应用程序的整个生命周期中保持不变。我设计该应用程序的方式是用户单击类(class)并提交成绩。我想要的是应用程序在 Activity 结束后存储成绩。当用户退出屏幕并返回时,他必须重新输入他得到的成绩。

我的页面代码如下:

选课 Activity

public class ClassCore extends Activity {

    TextView eng101, eng102, mat186, com173;
    TextView eng101scr, eng102scr, mat186scr, com173scr;
    LinearLayout eng101bg, eng102bg, mat186bg, com173bg;
    Button coreReturn;
    int ss;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.classcore);

        eng101bg = (LinearLayout)findViewById(R.id.eng101bg);
        eng102bg = (LinearLayout)findViewById(R.id.eng102bg);
        mat186bg = (LinearLayout)findViewById(R.id.mat186bg);
        com173bg = (LinearLayout)findViewById(R.id.com173bg);

        eng101 = (TextView)findViewById(R.id.eng101);
        eng102 = (TextView)findViewById(R.id.eng102);
        mat186 = (TextView)findViewById(R.id.mat186);
        com173 = (TextView)findViewById(R.id.com173);

        eng101scr = (TextView)findViewById(R.id.eng101CoreScr);
        eng102scr = (TextView)findViewById(R.id.eng102CoreScr);
        mat186scr = (TextView)findViewById(R.id.mat186CoreScr);
        com173scr = (TextView)findViewById(R.id.com173CoreScr);

        coreReturn = (Button)findViewById(R.id.btnCoreRtrn);


        eng101.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent i = new Intent(ClassCore.this, Eng101.class);
                i.putExtra("grades", "eng101" );
                startActivityForResult(i, 1);
            }
        });
    }

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(data.getExtras().containsKey("e101FinalScore")){
            eng101scr.setText(data.getStringExtra("e101FinalScore"));
            eng101bg.setBackgroundColor(Color.parseColor("#00FF00"));
        }}

英语 Activity

public class Eng101 extends Activity {

    Button btnSubmit;
    EditText userGrade;
    String strGrade;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.eng101);

        btnSubmit = (Button)findViewById(R.id.btnE101);
        userGrade = (EditText)findViewById(R.id.eng101Scr);

        btnSubmit.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                strGrade = userGrade.getText().toString();
                Intent i = getIntent();
                String msg = i.getStringExtra("grades");
                if(msg.contentEquals("eng101")){
                    i.putExtra("e101FinalScore", strGrade);
                    setResult(RESULT_OK, i);
                    finish();
                }               
            }
        });     
    }   
}

最佳答案

您可以通过 3 种方式实现您的功能。

<强>1。全局变量

您可以通过使用修饰符 public static 定义任何变量来使用全局变量,例如

public static String GRADE = "10";

您可以通过 CLASS_NAME.GRADE 在应用中的任何类(class)中使用它。喜欢

String grade = CLASS_NAME.GRADE;

注意:当您关闭应用程序时,它会丢失其值。

<强>2。共享偏好

要在应用关闭后保留值,您需要使用 SharedPreference 或 SQLite 数据库。

这里是如何使用 SharedPreference 的例子.

在您的 Activity 中如下初始化 SharedPreference

SharedPreferences sp = getSharedPreferences("app_name", Context.MODE_PRIVATE);

如下所示从 SharedPreference 获取值

String grade = sp.getString("grade", "0");

如下设置SharedPreference的值

sp.edit().putString("grade", "5").commit();

<强>3。 SQLite

您可以使用 SQLite数据库来存储自己的结构数据。您可以根据您的要求创建不同的表并存储/检索日期。以下是一些示例:http://www.vogella.com/tutorials/AndroidSQLite/article.html

关于android - 离开 Activity 后保留变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23707300/

相关文章:

android - 如何缩放并向android mapfragment添加标记

java - 排序错误 : Hashmap<String, 列表 <String>>

android - 如何使用带有上下文操作栏的可选列表?

android - 设备 DHCP 信息

java - API 'variant.getMergeResources()' 已过时,已替换为 'variant.getMergeResourcesProvider()'

java - 从 json 响应创建 java 模型

android - 如何在 Android 中为三星 Galaxy Note 2 创建模拟器?

Android 4.0.3 并完成 Activity

java - 这个自定义阵列适配器有什么问题?

android - 是否有任何深层链接可以在 Android 上打开 Skype/联系人?