给定一个EditText焦点

时间:2018-12-09 09:47:43

标签: android

我正在彼此相邻使用2个EditText,左边的一个专注于片段启动,我想给右边的一个焦点,我试图在右边的EditText上调用requestFocus(),但是它不起作用< / p>

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.sandwich_fragment,container, false);

        sandwichNameEditText = view.findViewById(R.id.sandwich_name_edit_text);
        sandwichPriceEditText = view.findViewById(R.id.sandwich_price_edit_text);
        insertSandwichImageView = view.findViewById(R.id.insert_sandwich_btn);
        sandwichListView = view.findViewById(R.id.sandwich_list);

        dbHandler = new DBHandler(getContext(),null);
        sandwichArrayList = dbHandler.getSandwiches();

        final SandwichListAdapter adpater = new SandwichListAdapter(getContext(),
                R.layout.sandwich_item, sandwichArrayList);

            sandwichListView.setAdapter(adpater);


        insertSandwichImageView.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if(sandwichNameEditText.getText().toString().equals("") || sandwichPriceEditText.getText().toString().equals("")){
                    Toast.makeText(getContext(),"No empty strings.", Toast.LENGTH_SHORT).show();
                    return;
                }
                Sandwich sandwich = new Sandwich(sandwichNameEditText.getText().toString(),
                        Double.parseDouble(sandwichPriceEditText.getText().toString()));
                dbHandler.addSandwich(sandwich);
                adpater.add(sandwich);
                sandwichNameEditText.setText("");
                sandwichPriceEditText.setText("");
                sandwichNameEditText.requestFocus(); // working here

            }
        });
        sandwichNameEditText.requestFocus(); // not working here
        return view;

1 个答案:

答案 0 :(得分:1)

尝试通过requestFocus方法调用onViewCreated

创建View后,您应该执行焦点请求。

您可以找到有关onCreateView hereonViewCreatedFragment方法之间差异的一些见解。

也就是说,您也应该在onViewCreated中移动视图元素初始化,因为它们是您要在创建视图之后 而不是在 正在创建。只需将inflate逻辑留在那里,一旦View在那里就执行其他逻辑。