Android 如何将数据从一个滑动选项卡传递到另一个滑动选项卡?
我需要将两个字符串从第一个选项卡传递到第二个选项卡。虽然我写了这段代码:Android 如何将数据从一个滑动选项卡传递到另一个滑动选项卡?,android,android-fragments,bundle,Android,Android Fragments,Bundle,我需要将两个字符串从第一个选项卡传递到第二个选项卡。虽然我写了这段代码: Map map = new Map(); Bundle bundle = new Bundle(); bundle.putString("Position", intent.getStringExtra("Position")); map.setArguments(bundle); Toast.makeText(context
Map map = new Map();
Bundle bundle = new Bundle();
bundle.putString("Position", intent.getStringExtra("Position"));
map.setArguments(bundle);
Toast.makeText(context,"Visualizzare la posizione sulla mappa",Toast.LENGTH_SHORT).show();
在第一个类中,此代码:
Bundle args = getArguments();
if(args != null)
{
Toast.makeText(getActivity().getBaseContext(),"Non è null",Toast.LENGTH_SHORT).show();
String pos=args.getString("Position");
String id=args.getString("ID");
}
在第二节课上,我的应用程序崩溃了。我不明白为什么。
我找了很多找原因,但我不明白我该怎么做。
您能告诉我如何将这两个字符串从第一个片段传递到第二个片段吗?
非常感谢片段之间的通信,您必须遵循以下流程: -您必须在片段和父活动之间定义接口通信器,然后通过包中的设置参数传递数据 要定义片段之间的接口通信器,请执行以下操作: 要设置参数,请执行以下操作:
Fragment fragment = new Fragment();
final Bundle bundle = new Bundle();
bundle.putString("data", data);
Log.i("BUNDLE", bundle.toString());
fragment.setArguments(bundle);
以下是流程:FragmentA--Data-->FragmentActivity--Data-->FragmentB
1-从片段定义接口通信器回调
interface communicate {
public void sendData(String data);
}
2-在父活动中实现此Communicator
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
public class MainActivity extends FragmentActivity implements communicate{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void sendData(String data) {
// TODO Auto-generated method stub
// From fragments we can call this method with the help of reference of communicate.
}
}
3-在第一个子片段中,我们必须从创建的活动中获取Communicator实例:
public class FragmentA extends Fragment implements OnClickListener{
Button button;
communicate cm;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.layout_fragmenta, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
**cm = (communicate) getActivity();**
button = (Button) getActivity().findViewById(R.id.button1);
button.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
cm.sendData();
}
}
4-在父活动中,您从methode sendData获取数据,并通过Bundle将数据传递给fragmentB:
@Override
public void sendData(String data) {
// TODO Auto-generated method stub
Fragment fragment = new Fragment();
final Bundle bundle = new Bundle();
bundle.putString("data", data);
Log.i("BUNDLE", bundle.toString());
fragment.setArguments(bundle);
}
5-最后;通过get arguments方法从FragmentB获取数据:
公共类ExampleFragment扩展了片段
{
}但是只发送
位置
并尝试获取位置
和ID
?为什么不将数据保存在共享引用
?不,我需要发送这两个字符串…我如何从父活动发送数据?再次查看我的答案我不明白5点..为什么我需要在中声明片段这样?片段A表示第一个选项卡,片段B表示第二个选项卡
public static FragmentB newInstance()
{
FragmentB fragment = new FragmentB();
// arguments
Bundle arguments = new Bundle();
arguments.putString(ARGUMENT_PRODUCT_ID, productId);
fragment.setArguments(arguments);
return fragment;
}
public FragmentB() {}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// handle fragment arguments
Bundle arguments = getArguments();
if(arguments != null)
{
}
}