我试图通过按钮点击将片段A中的数据发送到NAVIGATION Drawer的片段B.我尝试使用bundle和intent但是它们都没有工作。
在Fragment A中,当我点击数据传递给另一个片段时,我有editText和按钮。
在片段B中有textView,其中editText数据将显示但我没有办法在导航抽屉中的片段之间进行通信
答案 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);
}
}
}