Java Android:一个父活动中的静态文本视图和两个操作它的子活动类

Java Android:一个父活动中的静态文本视图和两个操作它的子活动类,java,android,static,textview,Java,Android,Static,Textview,我有三个活动班,一个家长和两个孩子。父类有一个静态TextView,我希望子类可以使用它 我的想法是将此TextView用作购物车计数器,因为它是静态的,所以每当用户在活动之间切换时,我不必担心刷新子类,因为只有一个TextView实例可供引用 一些伪代码有助于说明: public class ParentActivity extends AppCompatActivity { protected static TextView cartCount; ... @Overr

我有三个活动班,一个家长和两个孩子。父类有一个静态TextView,我希望子类可以使用它

我的想法是将此TextView用作购物车计数器,因为它是静态的,所以每当用户在活动之间切换时,我不必担心刷新子类,因为只有一个TextView实例可供引用

一些伪代码有助于说明:

public class ParentActivity extends AppCompatActivity {
    protected static TextView cartCount;
    ...
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        ...
        cartCount = (TextView) actionLayout.findViewById(R.id.cart_count);
        cartCount.setText(cartObject.getTotalAmountOfItems());
        ...
    }
}

public class HomeActivity extends ParentActivity {
    ...
    onItemClick
        cartCount.setText("1") // user adds one item to the cart
}

public class CartActivity extends ParentActivity { // lists items currently in shopping cart
    ...
    onItemClick
        cartCount.setText("2") // user realizes they want two of the selected item
}
这几乎是可行的,除了当我通过单击返回按钮返回HomeActivity(launchMode=singleTop)时,计数器与导航到CartActivity之前相同,即使尝试在购物车中添加或删除项目时,计数器也保持不变。仍然需要刷新HomeActivity以使其再次开始反映正确的项目数,这可以通过旋转屏幕来完成


这几乎就像静态TextView被固定在CartActivity上一样,因此我在HomeActivity中看到的TextView不再是我在ParentActivity中声明的TextView的真实表示。有人能详细说明一下在这个场景中幕后发生了什么吗?

静态视图不是一个好主意。如果在极少数情况下不小心使用它们,它们可能会导致内存泄漏和崩溃。您的案例听起来不像我使用静态文本视图的案例之一。相反,最好使用某种共享偏好来保存活动中常见的数据


有关如何执行此操作的更多信息,请参见:

静态视图不是一个好主意。如果在极少数情况下不小心使用它们,它们可能会导致内存泄漏和崩溃。您的案例听起来不像我使用静态文本视图的案例之一。相反,最好使用某种共享偏好来保存活动中常见的数据


有关如何执行此操作的更多信息,请参见:

我还建议不要使用静态视图,而不要使用任何解决方案。 我将为您的问题提出两种解决方案: 1.应用程序类:如果您知道如何实现它,那么只需在应用程序类中创建一个变量来保存购物车数据。无论何时您的家庭活动出现在前面,即onStart方法(请查看您的商业案例)
2.SharedReference:您可以创建共享首选项并将购物车数据保存在此中,然后再次保存在主活动的启动中,您可以清除首选项

我还建议不要使用静态视图,根本不是解决方案。 我将为您的问题提出两种解决方案: 1.应用程序类:如果您知道如何实现它,那么只需在应用程序类中创建一个变量来保存购物车数据。无论何时您的家庭活动出现在前面,即onStart方法(请查看您的商业案例)
2.SharedReference:您可以创建共享首选项并将购物车数据保存在此中,然后再次保存在主活动的启动中,您可以清除首选项

对购物车计数背后的原因感到困惑,您想在购物车计数中添加1吗

当您返回主页时,可能会通过一个bundle传入setText的值,以便存储该值。在活动之间导航时使用startActivity,对吗

public class HomeActivity
{

public final String EXTRA_cartCount = "HomeActivity.cartCount"
...

@Override
    public void onBackPressed()
    {
        Intent i = new Intent(this,ParentActvity.class);
        i.putExtra(EXTRA_cartCount,cartCount);
        startActivity(i);

    }

}
Also in cardActivity
现在在

公开课活动 {

亲子活动

公共类亲子关系 {


对购物车计数背后的原因感到困惑,您想在购物车计数中添加1吗

当您返回主页时,可能会通过一个bundle传递setText的值,以便存储该值。您在活动之间导航时使用的是startActivity,对吗

public class HomeActivity
{

public final String EXTRA_cartCount = "HomeActivity.cartCount"
...

@Override
    public void onBackPressed()
    {
        Intent i = new Intent(this,ParentActvity.class);
        i.putExtra(EXTRA_cartCount,cartCount);
        startActivity(i);

    }

}
Also in cardActivity
现在在

公开课活动 {

亲子活动

公共类亲子关系 {

...

if(getIntent().getClass().equals(HomeActivity.class))
        {
            getIntent().getExtras().get("HomeActivity.cartCount");
        }
        else
        {
            getIntent().getExtras().get("CartActivity.cartCount");
        }



}