提问者:小点点

用Android中另一个片段中的EditText填充spinner


我有两个片段。在第一个是编辑文本女巫从用户获取一些信息,在另一个片段有Spinner.我发送编辑文本,这是第一个转换成字符串,在第二个片段的Spinner与Android导航。它显示的文本刚刚好,但当我希望添加另一个文本到Spinner,它只是替换第一个文本和显示一个文本/项目在Spinner。 所以我的问题是如何保存我以前发送的文本,并有很好的下拉旋转器。 顺便说一句,我正在使用数据绑定,我不知道它是否是解决方案的重要信息。

我正在发送数据的片段:

@Override
public void onClickComplete() {
    String addCategoryString = addCategory.getText().toString();
    FluctuatingCategoryFragmentDirections.ActionFluctuatingCategoryToCreatingBudgetingItem2 action
            = FluctuatingCategoryFragmentDirections.actionFluctuatingCategoryToCreatingBudgetingItem2();
    action.setFluctuatingCategory(addCategoryString);
    navController.navigate(action);
}

接收片段:

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    if (getArguments() != null) {
        CreatingBudgetingItemFragmentArgs args = CreatingBudgetingItemFragmentArgs.fromBundle(getArguments());
        String getCategory = args.getFluctuatingCategory();
        Log.i("Category: ", getCategory);
        ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, android.R.id.text1);
        spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAdapter);
        spinnerAdapter.notifyDataSetChanged();
    }
}

共1个答案

匿名用户

当您导航到VultuatingCategoryToCreatingBudgetingItem时,每次都会重新创建片段,这就是为什么只显示您传递的值。 必须使用ViewModel。

设置一个包含波动类别的列表,并设置您的CreatingBudgetingItemFragment以从ViewModel获取列表项。

不给你任何代码,因为我想让你开始你的学习曲线。 这可能会有帮助。