片段替换后,EditText不会检测文本

时间:2012-09-19 14:38:29

标签: android authentication android-edittext

这是Navigator.onClick()的代码。 Login.onResume()中的代码似乎可以工作,但是在我这样做之后,无论我在用户ID和密码字段中输入什么内容,应用程序似乎都没有意识到这一点。它只是一直说“用户ID不能为空”。它第一次正常工作。

private void buttonClick(final Button btnLeft, final Button btnRight,
        final Button btnQueue) {

    btnLeft.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            previousScreen = btnLeft.getText().toString();
            if (previousScreen.equals("Login")) {
                errorMessage = loginProcedure();
                if (errorMessage.equals("")) {
                    showDetails(btnLeft, btnRight, btnQueue,
                            fragmentTransaction);
                } else {
                    FileIO.displayMessage(getActivity(), errorMessage, null);
                }
            } else if (...) {
            }

            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();
        }

    });



private String loginProcedure() {

    errorMessage = "";
    String userID = ((EditText) getActivity().findViewById(
            R.id.editUserid)).getText().toString();
    if (userID.trim().equals("")) {
        errorMessage = "User ID cannot be empty";
        return errorMessage;
    }

    String password = ((EditText) getActivity().findViewById(
            R.id.editPassword)).getText().toString();
    if (password.trim().equals("")) {
        errorMessage = "Password cannot be empty";
        return errorMessage;
    }

    if (!FileIO.UserList.contains((userID + "PR" + password)
            .toUpperCase())) {
        errorMessage = "UnAuthorized User";
        return errorMessage;
    } else {
        userID = userID;
        UserName = password;
    }

    return errorMessage;
}

1 个答案:

答案 0 :(得分:0)

看起来问题在于您的活动看到的EditText视图与屏幕上当前活动的视图不同。这可能发生在一些方面,因为我看不到你的所有代码很难说清楚到底发生了什么。

要测试将LogIn片段更改为:

public class Login extends Fragment {
    private View fragmentView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        fragmentView = inflater.inflate(R.layout.login, null);
        return fragmentView;
    }

    @Override
    public void onResume() {
        super.onResume();

        EditText e1 = (EditText) fragmentView.findViewById(R.id.editUserid);
        e1.setText("");

        EditText e2 = (EditText) fragmentView.findViewById(R.id.editPassword);
        e2.setText("");
    }
}

这将确保您设置当前的LogIn Fragment用户并传递给“”。