gpt4 book ai didi

java - 访问 fragment 中声明的微调器

转载 作者:行者123 更新时间:2023-12-01 12:47:34 26 4
gpt4 key购买 nike

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

下面是我的 fragment 的代码,我在其中初始化并填充微调器

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”访问我的微调器,因为它已从 fragment 填充。我希望能够采用某人选择的选项并将其与方法“createExercise”中的练习名称一起输入数据库。

最佳答案

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

通常,您想要响应 fragment 中某种类型的事件。例如,按下按钮。从 fragment 中,您可以像这样调用 Activity :

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

例如,更好的方法是让 Activity 实现 IOptionSelectedListener 接口(interface)。该接口(interface)可以有一个名为 OnOptionSelected(value) 的方法。那么你可以这样做:

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

您还可以将 Activity 引用传递给 fragment 的 newInstance() 方法,而不是调用 getActivity()。

Activity 还可以引用 fragment 并调用 fragment 上的方法来获取微调器的实际值。

关于java - 访问 fragment 中声明的微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24543328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com