リストからユーザーはアイテムをクリックすると、クリックされたアイテムのデータを示すフラグメントが膨らみます。ユーザーはそのデータを編集して保存をクリックして、編集したデータを保存することもできます。私はgetArguments()でnullポインタ例外を受け取り続けます。
しかし、リストを含む画面からは、ユーザーが新しいオブジェクトを作成したい場合は、追加ボタンもあります。
ユーザーがリストから項目をクリックすると、newInstance(..);
が と呼ばれ、断片的にonCreateView();
私はそのためのすべての変数が異なるビュー内の項目をクリックしたinitilize。私は得続けるので、しかし、それがうまく機能していない:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.os.Bundle.getInt(java.lang.String, int)' on a null object reference
のnewInstanceはRecyclerViewアダプタのonClick()から呼び出されます。ここ
public static CreateTrainingFragment newInstance(ItemModel itemModel) {
bundle = new Bundle();
bundle.putInt(SB_DURATION, itemModel.getDuration());
bundle.putInt(SB_DISTANCE, itemModel.getDistance());
CreateTrainingFragment createTrainingFragment = new CreateTrainingFragment();
createTrainingFragment.setArguments(bundle);
return createTrainingFragment;
}
私が使用getArgumentsを();引数をビューに渡します。 引数が存在しない場合、デフォルトの0変数が自動的にsbduration.setProgress();
に挿入されませんか?ここで
private void initArgumentsData() {
sbduration.setProgress(getArguments().getInt(SB_DURATION, 0));
sbDistance.setProgress(getArguments().getInt(SB_DISTANCE, 0));
txtduration.setText(getArguments().getInt(SB_DURATION, 0) + " min");
txtDistance.setText(getArguments().getInt(SB_DISTANCE, 0) + " km");
}
作成し、どこで、私はInitArgumentData()を使用しているか、私の見解です。 RecyclerViewから
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.createtraining_layout, container, false);
sbduration = (SeekBar) v.findViewById(R.id.seekbar_time);
sbDistance = (SeekBar) v.findViewById(R.id.seekbar_distance);
txtduration = (TextView) v.findViewById(R.id.time_value);
txtDistance = (TextView) v.findViewById(R.id.distance_value);
sbduration.setMax(100);
sbDistance.setMax(50);
initArgumentsData();
}
は、私はこのような新しいフラグメントインスタンスを起動します。
addbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().beginTransaction().replace(R.id.navdrawer_maincontainer,new CreateTrainingFragment()).addToBackStack(null).commit();
}
});
新しいフラグメントインスタンスをどのように開始しますか? – fluffyBatman
RecyclerViewアダプタのフルコードを掲載することができますか? – Rahul
bundle = new Bundle();どうして変数をメソッドlocalに束縛しないのですか?このバンドル変数はどこからでもヌルに設定されていません。 – Rahul