で
public class PersonDetailActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
// This variables have the right value
String personName = intent.getStringExtra("personName");
String personID = intent.getStringExtra("personID");
Bundle bundle = new Bundle();
// I'm trying to send this variable to make a request later
bundle.putString("personID", personID);
// Set Fragment Arguments
PersonDetailFragment fragment = new PersonDetailFragment();
fragment.setArguments(bundle);
setContentView(R.layout.persons);
}
}
public class PersonDetailFragment extends Fragment {
public PersonDetailFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// This throw me a NPE
String data = null;
if (getArguments() != null) {
data = getArguments().getString("personID");
}
final View rootView = inflater.inflate(R.layout.person_detail_list, container, false);
return rootView;
}
}
おかげであなたはFragment
インスタンスを作成した後に任意の変数を渡す必要がない場合は、このようなコンストラクタでパラメータを渡す:
は、ここに私の試みです。
このような断片のコンストラクタビーイング
PersonDetailFragment fragment = new PersonDetailFragment(personID);
:
public PersonDetailFragment(String personID) {
// Required empty public constructor
}
アクティビティと常に通信したい場合は、インターフェイスを実装することができます。この記事を読む、それを始めるのは良い点です、listeners
。
https://developer.android.com/training/basics/fragments/communicating.html
、 'your_fragment_container'ではなく、レイアウトに' '自体を追加するので、' layout.persons' XMLに追加する必要があります。適切なフラグメントのクラスでこのメソッドを書きます。詳細情報[こちら](https://developer.android.com/training/basics/fragments/fragment-ui.html#AddAtRuntime) –
ありがとう、それは魅力的なように働いた=) –