android-将字符串从片段主要活动传递给viewpager中的片段活动

android-将字符串从片段主要活动传递给viewpager中的片段活动,第1张

概述我想将字符串传递给片段活动(主)中的所有fragment(child),也许这张图片可以解释我到底想做什么https://dl.dropboxusercontent.com/u/57465028/SC20140205-163325.png所以,从图片上方…我想通过按一个按钮从edittext传递一个字符串到viewpager中的所有活动….我该怎么做?我尝试遵

我想将字符串传递给片段活动(主)中的所有fragment(child),也许这张图片可以解释我到底想做什么

https://dl.dropboxusercontent.com/u/57465028/SC20140205-163325.png

所以,从图片上方…我想通过按一个按钮从edittext传递一个字符串到vIEwpager中的所有活动….我该怎么做?

我尝试遵循此代码https://stackoverflow.com/a/12739968/2003393,但无法解决我的问题.

请帮助我…我被困住了

预先感谢.

这是我来自片段活动(MainActivity)的代码

公共类Swipe_Menu扩展FragmentActivity {

//String KeyWord;//private static final String KEYWORD = "keyword";private VIEwPager _mVIEwPager;private VIEwPagerAdapter _adapter;/** Called when the activity is first created. */@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    requestwindowFeature(Window.FEATURE_NO_Title);    setContentVIEw(R.layout.swipe_menu_image);    button Back = (button)findVIEwByID(R.ID.account);    Imagebutton Search = (Imagebutton)findVIEwByID(R.ID.search);    EditText Keyword = (EditText)findVIEwByID(R.ID.keyword);    final String KeyWord = Keyword.getText().toString();     /**     * Back button click event     * */    Back.setonClickListener(new VIEw.OnClickListener() {        @OverrIDe        public voID onClick(VIEw arg0) {            finish();        }    });    setUpVIEw();    setTab();}protected voID sendValuetoFragments(String value) {    // it has to be the same name as in the fragment    Intent intent = new Intent("my_package.action.UI_UPDATE");    intent.putExtra("UI_KEY", KeyWord  );    LocalbroadcastManager.getInstance(this).sendbroadcast(intent);}

这是我的片段(儿童活动)

public class Store_Swipe extends Fragment {public static final String ACTION_INTENT = "my_package.action.UI_UPDATE";String KeyWord;private TextVIEw kata_keyword;protected broadcastReceiver receiver = new broadcastReceiver() {    @OverrIDe    public voID onReceive(Context context, Intent intent) {        if(ACTION_INTENT.equals(intent.getAction())) {            String value = intent.getStringExtra("UI_KEY");            updateUIOnReceiverValue(value);        }    }};private voID updateUIOnReceiverValue(String value) {    // you probably want this:    KeyWord = value;}public static Fragment newInstance(Context context) {    Store_Swipe f = new Store_Swipe();    return f;}@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    IntentFilter filter = new IntentFilter(ACTION_INTENT);    LocalbroadcastManager.getInstance(getActivity()).registerReceiver(receiver, filter);}@OverrIDepublic voID onDestroy() {    LocalbroadcastManager.getInstance(getActivity()).unregisterReceiver(receiver);    super.onDestroy();}@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) {    /*Bundle bundle = this.getArguments();    KeyWord = bundle.getString("keyword");*/    VIEw vIEw = inflater.inflate(R.layout.store_swipe, container, false);    init(vIEw);    return vIEw;}voID init(VIEw vIEw) {    kata_keyword = (TextVIEw) vIEw.findVIEwByID(R.ID.keyword);    //ImageVIEw image = (ImageVIEw) vIEw.findVIEwByID(R.ID.image_error);    kata_keyword.setText(KeyWord);}

}

解决方法:

您无权直接访问VIEwPager中的片段,因此无法直接引用它们.

在这些情况下,我要做的是将广播消息从“活动”发送到“片段”.因此,在片段中注册broadcatReceiver(在onCreate或onCreateVIEw中-由您决定)m,为该接收者设置自定义 *** 作(例如,“ my_package.actions.internal.broADCAST_ACTION”),不要忘记注销接收器从补充方法.

当您要通过活动发送消息时,请使用上述 *** 作创建一个意图,在意图中额外添加字符串并发送广播.

在接收者的onReceive方法(在片段内)中,从intent参数获取String,然后就可以得到该字符串.

说得通?

编辑:为了提供一些代码,以下是我将对片段进行的更改:

public class Store_Swipe extends Fragment {    public static final String ACTION_INTENT = "my_package.action.UI_UPDATE";    protected broadcastReceiver receiver = new broadcastReceiver() {        @OverrIDe        public voID onReceive(Context context, Intent intent) {            if(ACTION_INTENT.equals(intent.getAction())) {                String value = intent.getStringExtra("UI_KEY");                updateUIOnReceiverValue(value);            }        }    };    private voID updateUIOnReceiverValue(String value) {        // you probably want this:        kata_keyword.setText(value);    }    String KeyWord;    private TextVIEw kata_keyword;    public static Fragment newInstance(Context context) {        Store_Swipe f = new Store_Swipe();        return f;    }    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        IntentFilter filter = new IntentFilter(ACTION_INTENT);        LocalbroadcastManager.getInstance(getActivity()).registerReceiver(receiver, filter);    }    @OverrIDe    public voID onDestroy() {        LocalbroadcastManager.getInstance(getActivity()).unregisterReceiver(receiver);        super.onDestroy();    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) {        Bundle bundle = this.getArguments();        KeyWord = bundle.getString("keyword");        VIEw vIEw = inflater.inflate(R.layout.store_swipe, container, false);        init(vIEw);        return vIEw;    }    voID init(VIEw vIEw) {        kata_keyword = (TextVIEw) vIEw.findVIEwByID(R.ID.keyword);        ImageVIEw image = (ImageVIEw) vIEw.findVIEwByID(R.ID.image_error);        kata_keyword.setText(KeyWord);    }}

我将从活动中获得以下代码,该参数是EditText的值:

protected voID sendValuetoFragments(String value) {    // it has to be the same name as in the fragment    Intent intent = new Intent("my_package.action.UI_UPDATE");    intent.putExtra("UI_KEY", value);    LocalbroadcastManager.getInstance(this).sendbroadcast(intent);}

您将从在onCreate中设置的点击监听器调用此方法:

findVIEwByID(R.ID.button_ID).setonClickListener(new OnClickListener() {                @OverrIDe    public voID onClick(VIEw v) {        String valueThatYouWantToSend = null; /// just the value        sendValuetoFragments(valueThatYouWantToSend);           }});
总结

以上是内存溢出为你收集整理的android-将字符串从片段主要活动传递给viewpager中的片段活动全部内容,希望文章能够帮你解决android-将字符串从片段主要活动传递给viewpager中的片段活动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1088078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存