【发布时间】:2015-06-15 08:14:15
【问题描述】:
所以我有 (WorkoutList Activity) -> (WorkoutList Fragment) -> (ExerciseList Fragment) -> (addExercise Fragment)
AddExercise 中有一个按钮,我希望它调用ExerciseList 中的一个方法
问题在于,在当前设置下,我正在尝试调用虚拟方法
void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
AddExercise 按钮的 XML:
<Button
android:id="@+id/add_exercise_button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/add_workout_message_done"
android:layout_weight="0"
android:onClick="addExerciseDone"
/>
在 OnCreateView 方法中的 ExerciseList 的代码 sn-p:
View rootView = inflater.inflate(R.layout.fragment_exercise_list, container, false);
Button AddExerciseDoneButton = (Button) getActivity().findViewById(R.id.add_exercise_button);
AddExerciseDoneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addExerciseDone(v);
}
});
注意: 这是对chinmay的建议的回应** 我将viewroot设置为ExerciseList的XML文件,这样我就可以让我的适配器显示我的列表视图,所以我不确定如何返回我创建的视图,以便我可以引用按钮。比如我做了
final View tmpView = inflater.inflate(R.layout.fragment_add_exercise, container, false);
Button AddExerciseDoneButton = (Button) tmpView.findViewById(R.id.add_exercise_button);
【问题讨论】:
-
setContentView不适用于Fragment。而不是使用onCreateView()方法。你的问题也不清楚。