【发布时间】:2015-01-27 15:13:52
【问题描述】:
我正在FragmentActivity 进行服务调用,我需要分别将两个数据(名称和地址)传递给片段 A 和片段 B。
这是我尝试过的代码。
public class C extends FragmentActivity {
// public PassDataToFragments fragmentCommunicator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.detail_pager);
serviceCall();
}
void serviceCall() {
JSONObject totalData = new JSONObject(result);
JSONObject jsonData = totalData.getJSONObject("result");
trainerStrName = jsonData.getString("name");
trainerStrAddress = jsonData.getString("address");
// activityCommunicator.passDataToFragment(trainerStrName); i am
// null pointer exception
// pass name to fragment A and address to fragment B
}
@Override
public SherlockFragment getItem(int arg0) {
switch (arg0) {
// Open Previous Projects
case 0:
FragmentA fragmentA = new FragmentA ();
return fragmentA;
// Open Certification
case 1:
FragmentB fragmentB = new FragmentB ();
return fragmentB;
}
return null;
}
}
我尝试的是我使用了接口,但我不知道如何使用并将名称的值获取到 FragmentA 并将地址的值获取到 Fragment B:
public interface PassDataToFragments {
public void passDataToFragment(String someValue);
}
class Fragment A extends Fragment implement PassDataToFragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.trainers_certification,
container, false);
return view;
}
@Override
public void passDataToFragment(String someValue) {
//Log.e("string",someValue);
}
}
【问题讨论】:
-
该主题在官方基础培训页面上进行了解释:developer.android.com/training/basics/fragments/…您是否尝试过按照给定的示例?
-
@Shadow :不需要使用
interface。使用参数化的类构造函数将数据从 Activity 传递到 Fragments -
setArgument不应该是更好的选择吗?
标签: android android-intent android-fragments android-fragmentactivity