访问在片段中声明的微调器

时间:2014-07-03 00:48:11

标签: java android android-activity android-fragments

我有一个微调器,我用资源中的数组列表填充。我填充了它,代码正在编译。我现在的问题是我似乎无法弄清楚如何从我的主类访问微调器。例如,我有我的班级" 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);
    }
}

我想知道如何从头等课程中访问我的微调器&#34; CreateExerciseActivity&#34;现在已经从片段中填充了它。我希望能够选择某人选择的选项并将其与方法&#34; createExercise&#34;中的练习名一起输入数据库。

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。

通常,您希望响应片段中的某种类型的事件。例如,按下按钮。您可以从片段中调用此活动:

CreateExerciseActivity activity = (CreateExerciseActivity) getActivity();
activity.createExercise(....);

更好的方法是让活动实现接口IOptionSelectedListener。接口可以有一个名为OnOptionSelected(value)的方法。然后你可以这样做:

IOptionSelectedListener listener = (IOptionSelectedListener) getActivity();
listener.OnOptionSelected(....);

您也可以将活动引用传递给片段的newInstance()方法,而不是调用getActivity()。

活动也可以引用片段并调用片段上的方法来获取微调器的实际值。