导航抽屉中片段之间的通信

时间:2016-05-06 05:27:09

标签: android android-fragments

我试图通过按钮点击将片段A中的数据发送到NAVIGATION Drawer的片段B.我尝试使用bundle和intent但是它们都没有工作。

在Fragment A中,当我点击数据传递给另一个片段时,我有editText和按钮。

在片段B中有textView,其中editText数据将显示但我没有办法在导航抽屉中的片段之间进行通信

4 个答案:

答案 0 :(得分:2)

让你的Activity进行沟通。

public static中取一个MainActivity变量,从中控制导航抽屉的Fragment替换。当您点击FragmentA中的按钮,将EditText中的值存储到public static的{​​{1}}变量中。然后加载MainActivity时检查FragmentB值是否为null。如果不是public static,则将该变量的值放在所需位置。

这不是在片段之间传递值的优雅方式,但在您的情况下,它可以正常工作。

如果你正在寻找如何将值从一个片段传递到另一个片段,请尝试这样的事情。

null

从您的// To pass some value from FragmentA FragmentB mFragmentB = new FragmentB(); Bundle args = new Bundle(); args.putString("VALUE", value); mFragmentB.setArguments(args); 使用代码获取传递的值。

FragmentB

答案 1 :(得分:2)

1-创建应用程序类

public class MyApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    mInstance = this;
  }
 private static MyApplication mInstance;
  public static synchronized MyApplication getInstance() {
    return mInstance;
  }
  String mytext;

public String getMytext() {
    return mytext;
}

public void setMytext(String mytext) {
    this.mytext = mytext;
}
}

showast中的2 app名称标签

<application
    android:name=".MyApplication"
 .......

3-来自第一个片段

MyApplication.getInstance().setMytext("your text here");

4-来自其他片段

String text=MyApplication.getInstance().getMytext();

答案 2 :(得分:1)

从第一个片段发送片段时

Bundle bundle = new Bundle();
bundle.putString("key", YOUR_EDITVIEW_TEXT);

Fragment fragment = new SECONDFragment();

if (arguments != null) {
    fragment.setArguments(arguments);
}

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.container, fragment);
ft.addToBackStack("");
ft.commit();

并在SecondFragment

private String mData;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getArguments() != null) {
        mData = getArguments().getString("key");
    }


}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.YourLayout, container, false);

    TextView text = (TextView) rootView.findViewById(R.id.yourTextView);
    text.setText(mData);
    return rootView;
}

答案 3 :(得分:0)

public void bubbleSort(){
   int out, in;
   for(out = nElems -1;out>1;out--){
       for(in =0; in<out; in++){
           if(a[in]>a[in+1])
               swap(in,in+1);
       }
   }
}