如何确保在单击按钮到另一个页面然后返回当前页面后数据仍保留在活动中?

时间:2012-09-24 06:36:25

标签: android button android-intent android-listview android-activity

我有一个用户创建事件的应用程序。用户需要从活动中检索某个名称,该活动是名单列表的ListView。

我遇到问题,确保在点击链接到其他活动的日期按钮(日历活动)后,名称应保留在活动中,然后返回当前活动。

我的3页代码:

Create_Events.java - 从ListView活动获取特定名称的代码和链接到另一个活动的btnDate onClickListener(日历活动)

Bundle bundle = getIntent().getExtras();  
        if(bundle != null)
        {

            String date = bundle.getString("date");

            txtDate.setText(date);  

        }

        Bundle b = getIntent().getExtras();
        if(b != null)
        {
            String name = bundle.getString("name");
            txtName.setText("Create an event for:" +name);
        }

buttonDate = (Button) findViewById(R.id.btnDate);
        buttonDate.setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
                Intent calIntent = new Intent(Create_Events.this, Calendar_Event.class);
                startActivity(calIntent);


            }

        });


ContactsList.java --  the ListView of the names which is passed to the Create_Events page.

    Cursor cursor = null;

               cursor = (Cursor) l.getItemAtPosition(position);
               Intent intent = new Intent(ContactsList.this, Create_Events.class);
               intent.putExtra("name", cursor.getString(cursor.getColumnIndex(buddyDB.KEY_NAME)));
               startActivity(intent);

我需要帮助。
我们将非常感谢您提供的任何帮助。提前致谢! =)

3 个答案:

答案 0 :(得分:1)

您可以通过保存当前屏幕状态来获得此行为, 您可以使用共享首选项或其他方式(xml,数据库,..), 这样,在您离开活动(onPause)之前,您可以保存所需的任何信息。 和on(onResume)如果信息存在(它不是第一次加载活动),

收集数据并将其放在屏幕上..

如果这对你来说太多了,你只需要保存名称字符串, 试着这样做: How to declare global variables in Android?

希望它有所帮助...

答案 1 :(得分:1)

好吧我从你的问题中理解的是你想从另一个活动回来之后在屏幕上保留你的数据。           像活动A - >活动B - >活动A

所以,在menifest文件中设置活动A

      android:launchmode="singletop" 

,当你从活动B回到活动A时

组     Intent intent = new Intent(ActivtyB.this,ActivityA.class);        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);     startActivity(意向);

答案 2 :(得分:0)

您可以使用SharedPreferences存储名称,同时使用bundle来存储日期。

从contactLists.java添加这些代码

private void SavePreferences(String key, String value)
{
    SharedPreferences sharedPref = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString(key, value);
    editor.commit();
}

private void LoadPreferences()
{
    SharedPreferences sharedPref = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
    String name = sharedPref.getString("name", "");



} 

然后将名称设置为将在listView上显示的textView。然后在create_events页面中加载首选项,即使您转到另一个活动,也会显示该名称。 如果您还有任何疑问,请告知我。 (: