所以,我的问题在于,在一个片段中(我用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的方式?
答案 0 :(得分:0)
onViewCreated()
的在onCreateView()之后调用,并确保片段的根视图为非null。任何视图设置都应该在这里进行例如,查看查找,附加侦听器。 来源:codepath
用于活动onCreate()