我有一个微调器,其中填充了资源中的数组列表。我已填充,并且代码正确编译。我现在的问题是,我似乎无法弄清楚如何从主类访问微调器。例如,我的类为“ CreateExerciseActivity”,方法为“ createExercise”
public class CreateExerciseActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_create_exercise_activiy);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
public void createExercise(View view){
EditText name = (EditText) findViewById(R.id.editText1);
DataBaseWrapper dbHandler = new DataBaseWrapper(this);
Exercise exercise = new Exercise(name.getText().toString(), category);
dbHandler.addExercise(exercise);
name.setText("");
}
}
下面是我的片段的代码,我在其中初始化并填充微调器
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
private Spinner spinner;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater
.inflate(R.layout.fragment_create_exercise_activiy,
container, false);
loadSpinnerCategories(rootView);
return rootView;
}
private void loadSpinnerCategories(View view){
spinner = (Spinner) view.findViewById(R.id.category_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity().getBaseContext(), R.array.categories,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
}
我想知道如何从第一类“ CreateExerciseActivity”访问微调器,因为它已经从片段中填充了。我希望能够采用某人选择的选项,并将其与练习名称一起输入数据库“ createExercise”中。
最佳答案
有很多方法可以做到这一点。
通常,您想响应片段中的某种事件。例如,按下按钮。在片段中,您可以这样调用活动:
CreateExerciseActivity activity = (CreateExerciseActivity) getActivity();
activity.createExercise(....);
例如,更好的方法是使活动实现接口IOptionSelectedListener。该接口可以具有一个称为OnOptionSelected(value)的方法。然后,您可以执行以下操作:
IOptionSelectedListener listener = (IOptionSelectedListener) getActivity();
listener.OnOptionSelected(....);
您也可以将活动引用传递给片段的newInstance()方法,而不是调用getActivity()。
该活动还可以引用该片段,并在该片段上调用方法以获取微调框的实际值。