如何在对其他片段执行操作后动态更改动态文本视图?

时间:2016-08-01 07:53:46

标签: java android android-layout android-fragments

所以,我的问题在于,在一个片段中(我用viewpager,我将其称为片段A)我点击这个动态创建的按钮,添加一个新片段(我称之为片段B) framelayout允许我使用PayPal服务。在PayPal活动结果中,片段B通过通信器(接口类)与主Activity通信,以调用片段A来更改该文本。但我得到一个空指针执行崩溃。

具体来说:

我做的是我创建了一个全局TextView变量,该变量在点击时初始化。我做了这个b / c我有一个动态膨胀的其他东西的列表,并避免TextView被错误的布局初始化我点击它初始化它。

bidChange.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                eventListChangeKey = keyVal;
                eventListChangeIdx = eventListIdx;
                eventBiddingChangeIdx = finalI;

                priceToChage = (TextView) biddersLayout.findViewById(R.id.single_list_bidder_bid_price);
                Bundle bundle = new Bundle();
                bundle.putInt("auctionID", auctionId);
                bundle.putInt("dateID", dateId);
                bundle.putInt("FromWhere", 2);

                Fragment fragment = new Fragment_Home_ItemInfo_Bid();
                fragment.setArguments(bundle);
                FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
                fragmentManager.beginTransaction()
                        .add(R.id.container_mainScreen, fragment, "itemInfo_bid")
                        .addToBackStack(null)
                        .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
                        .commit();
            }
        });

在主要活动中

public void changeBidderPrice(String s) {
    Fragment fragment = viewPagerAdapter.getItem(1);
    ((Fragment_List) fragment).changePrice(s);

}

就是我做的事情

回到片段A

public void changePrice(String val) {
    priceToChage.setText(val);
    dataMap.get(eventListChangeKey).get(eventListChangeIdx).getBidList().get(eventBiddingChangeIdx).setPrice(val);

}

我认为这已经结束了,但我无法弄清楚这一点。我在StackOverflow中搜索过类似的案例,但我无法得到帮助。

问题是我初始化TextView的方式吗?还是我从主要活动中调用片段A的方式?

1 个答案:

答案 0 :(得分:0)

片段onViewCreated()

在onCreateView()之后调用,并确保片段的根视图为非null。任何视图设置都应该在这里进行例如,查看查找,附加侦听器。 来源:codepath

用于活动onCreate()