离开活动后保留变量

时间:2014-05-17 03:32:10

标签: android

我试图在应用程序的整个生命周期中找到一种方法来保持我的变量不变。我设计应用程序的方式是用户点击课程并提交成绩。我想要的是应用程序在活动结束后存储等级。当用户退出屏幕并返回时,他必须重新进入他获得的成绩。

我的网页代码如下:

班级选择活动

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"));
        }}

英语活动

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 个答案:

答案 0 :(得分:2)

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

<强> 1。全局变量

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

public static String GRADE = "10";

您可以在CLASS_NAME.GRADE的应用中的任何课程中使用它。像

String grade = CLASS_NAME.GRADE;

注意:关闭应用时,它会失去其值。

<强> 2。 SharedPreference

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

以下是如何使用SharedPreference的示例。

在活动中初始化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

答案 1 :(得分:0)

答案 2 :(得分:0)

当用户即将退出活动时(onPause),您可以使用SharedPreferences文件将变量存储为键值对,并且当重新创建活动时,您可以从该共享首选项文件中读取数据。

http://developer.android.com/guide/topics/data/data-storage.html#pref