简体   繁体   English

如何在ViewPager中将单个片段的值从Fragment更新为Activity?

[英]How to update value from Fragment to Activity from single Fragment in ViewPager?

I am writing followings code for PagerAdapter 我正在为PagerAdapter写以下代码

@Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            fragment_edit_delivery_location = new Fragment_edit_delivery_location_Map();
            Bundle arg = new Bundle();
            arg.putString("delivery_to_title_map", "Map Location");
            fragment_edit_delivery_location.setArguments(arg);
            return fragment_edit_delivery_location;


        case 1:
            fragment_edit_delivery_locationHome = new Fragment_edit_delivery_locationHome();
            Bundle arg1 = new Bundle();
            arg1.putString("delivery_to_title_home", "Home");
            fragment_edit_delivery_location.setArguments(arg1);
            return fragment_edit_delivery_location;
}
}

I am getting error as error java.lang.IllegalStateException: Can't change tag of fragment Fragment_edit_delivery_location_Map 我收到错误消息,错误为java.lang.IllegalStateException:无法更改片段Fragment_edit_delivery_location_Map的标签

Constructor of adapter 适配器的构造函数

public ActionTabAdapter( FragmentManager fm) {
super(fm);
}

I am using ViewPager in MainActivity as : 我在MainActivity中使用ViewPager为:

adapter = new ActionTabAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);

I am trying to get dynamic value From current Fragment and again used in MainActivity to send String value as intent From MainActivity to SecondActivity .....but also not being able to get accurate value from Current Frgment .....Any kind of help is appreciated Thank you 我正在尝试从当前Fragment获取动态值,并再次用于MainActivity中以将String值作为意图从MainActivity发送至SecondActivity .....但也无法从Current Frgment中获取准确的值....感谢帮助,谢谢

use call backs would help you out 使用回电会帮助您

1) create an interface 1)创建一个界面

public interface TextCallback {
void getcalltochangeText(String txt);
void getArrayToset(ArrayList<String> data);

} }

2) In your fragment class put this way TextCallback textCallback; 2)在您的片段类中以这种方式放置TextCallback textCallback;

textCallback.getcalltochangeText("BREW TEA"); textCallback.getcalltochangeText(“ BREW TEA”);

   @Override
public void onAttach(Activity activity) {
    super.onAttach(activity);

    if(activity instanceof FragmentCommunicator)
    {


        fc=(FragmentCommunicator)activity;

    }
    else
    {
        throw  new  ClassCastException();
    }

    if(activity instanceof TextCallback)
    {
        textCallback=(TextCallback)activity;
    }
    else
    {
        throw  new  ClassCastException();

    }
}

3) And then in you main activity implement this interface 3)然后在您的主要活动中实现此接口

public class HomeActivity extends FragmentActivity implements View.OnClickListener ,TextCallback



@Override
public void getcalltochangeText(String txt) {
// here you can get passed values from fragment
    setReceivedMsg(txt);
}

// and get the values here that you want //并在此处获取所需的值

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM