【问题标题】:How to maintain data of five activities when comes to First activity on click of back in fifth Activity第五个Activity点击返回第一个Activity如何维护五个Activity的数据
【发布时间】:2017-07-19 10:44:16
【问题描述】:

我正在编写一个应用程序,我正在处理 5 个活动,比如说 A、B、C、D 和 E。 活动 A 调用 B,B 调用 C,C 调用 D,D 调用 E。在每个活动上,我都有一个名为“下一步”按钮的按钮和 editText 来填写名称。当用户点击任何 A、B、C、D、E 活动中的下一个按钮时,应用程序应该转到下一个活动屏幕,但是当用户点击 E 活动中的后退按钮时,它应该继续活动 A。

现在我的问题是,当我从活动 E 回来后从活动 A 开始时,我想维护用户第一次填写的所有活动的 editText 数据?

【问题讨论】:

    标签: android


    【解决方案1】:

    试试这个:

    有一个共享偏好文件。单击下一步时,您将字段保存在共享首选项中。

    然后在加载活动时

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_a);
    
    et1 = (EditText)findViewById(R.id.editText_Name);
    loadSavedPreferences(); 
    
    }
    private void loadSavedPreferences() {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    
    et1.setText(sharedPreferences.getString("string_et_Name",""));
    
    }
    

    在单击下一个按钮时拥有自己的保存机制。

    注意:单击完成时清除您的共享偏好(如果需要)

    【讨论】:

    • 不想使用共享偏好。有没有其他方法可以做到这一点
    • 使用 SQLITE
    【解决方案2】:

    第 1 步:首先假设在 MainActivity 上标出一个带有 int 值的布尔标志:

    private boolean flag=200;
    

    第 2 步:从主要活动开始,我们将切换到假设单击按钮分别有 5 个其他活动。 因此,在主要活动中,我们调用StartActivityForResult(intent,flag);,这表明我们可以从任何活动中返回相同的标志值。

    第 3 步: 现在假设我们想要活动“E”的数据(根据您的问题),然后我们通过捆绑发送它来发送它; 比如:在我们旅行的每个活动上声明相同的布尔值 200

                    Intent intent=new Intent();
                    intent.putExtra("firstName",firstName);
                    intent.putExtra("lastName",lastName);
                    setResult(flag,intent);
                    finish();
    

    第 4 步: 通过被覆盖的 onActivityResult() 方法获取即将到来的活动的捆绑价值 并检查标志值 喜欢:

            if (resultCode==200)
            {
                String firstName=data.getStringExtra("firstName");
                String lastName=data.getStringExtra("lastName");
    
                Intent intent=new Intent();
                intent.putExtra("firstName",firstName);
                intent.putExtra("lastName",lastName);
                setResult(200,intent);
                finish();
            }
    

    第 5 步:同样适用于所有活动;

    第 6 步: 最后,在 MainActivity 上获取 bundle 喜欢:

    @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
    
            if (resultCode==200)
            {
                String firstName=data.getStringExtra("firstName");
                String lastName=data.getStringExtra("lastName");
    
                textViewFirstName.setText(firstName);
                textViewLastName.setText(lastName);
            }
        }
    

    【讨论】:

      【解决方案3】:

      我做了一些与您的需求非常相似的事情,就像您一样,我从活动开始,但后来我发现这一切都很容易,1 个活动有几个片段而不是很多活动,也许您感兴趣:StepStone

      这里是常见问题的答案:ans

      然后,如果您想传递数据,我正在使用 Parceler,因为我将数据保存在自定义类中,请检查我的问题: How can i correctly interact between Activities and fragments

      如果您有任何疑问,请直说。 希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-26
        • 2011-11-24
        相关资源
        最近更新 更多