【问题标题】:How to ensure the data remain in an activity after clicking a button to another page then return to current page?单击按钮到另一个页面然后返回当前页面后,如何确保数据保留在活动中?
【发布时间】:2012-09-24 06:36:25
【问题描述】:

我有一个用户创建事件的应用程序。用户需要从一个名称列表的 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);

我需要这方面的帮助。
我们将不胜感激提供的任何帮助。提前致谢! =)

【问题讨论】:

  • 你可以调试它并检查值是否相同
  • 你好,我已经尝试调试,但问题仍然没有解决
  • 尝试将值保存在应用程序上下文中。

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


【解决方案1】:

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

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

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

希望对你有帮助……

【讨论】:

  • 您好,感谢您的回答。但我不明白你的意思。我查看了您提供的链接,但问题并没有解决我的问题
  • 嗨,它是这样的:如果你有一个 singelton 对象(假设是扩展应用程序) - 那么无论现在呈现哪个活动,你总是可以在这个 singelton 中保存变量总是得到这个veriables - 那么你prablom只是将活动变量保存在onPause上并将它们重新放在onResume上,如果它更有意义,请将其称为全局变量..
【解决方案2】:

好的,我从您的问题中了解到,您希望在从另一项活动回来后将您的数据保留在屏幕上。 比如活动A-->活动B-->活动A

所以,在活动 A 的清单文件中设置

      android:launchmode="singletop" 

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

设置 Intent intent=new Intent(ActivtyB.this, ActivityA.class); 意图.addFlags(意图.FLAG_ACTIVITY_CLEAR_TOP); 开始活动(意图);

【讨论】:

    【解决方案3】:

    您可以使用 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 页面中加载首选项,即使您转到另一个活动,也会显示该名称。 如果您还有任何问题,请告诉我。 (:

    【讨论】:

    • 您好,感谢您的回答和您的代码示例。我会试试你的代码,如果我有任何问题,我会告诉你=)
    猜你喜欢
    • 2017-04-23
    • 2011-12-15
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2013-07-19
    • 2015-09-03
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多