为什么Edit Text在android上单击按钮时返回空字符串?

问题描述 投票:0回答:1

制作一个简单的登录屏幕,我在其中使用两个编辑文本作为用户名和密码。我在单击按钮时设置了一个侦听器,并使用getText()函数将值存储在变量中,但是我得到的是空字符串。我尝试烘烤这些变量,但是在调试时却得到了空的烘烤。

 EditText ed1,ed2;
    Button b1;
    DatabaseReference dr;
    Query q;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ed1=findViewById(R.id.editText10);
        ed2=findViewById(R.id.editText11);
        b1=findViewById(R.id.button);
        final String role=getIntent().getStringExtra("role");
        b1.setOnClickListener(new View.OnClickListener() {
            String username=ed1.getText().toString();
            String input_password=ed2.getText().toString();
            @Override
            public void onClick(View view) {

                if(role.equals("teacher"))
                {
                    dr= FirebaseDatabase.getInstance().getReference();
                    Toast.makeText(LoginActivity.this, username+" "+input_password, Toast.LENGTH_SHORT).show();
                    Query q=dr.child("Teachers").orderByChild("username").equalTo(username);
                    q.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            if(!dataSnapshot.exists())
                            {
                                Toast.makeText(LoginActivity.this, "Invalid Combination no data", Toast.LENGTH_SHORT).show();
                            }
                            for (DataSnapshot ds: dataSnapshot.getChildren())
                            {
                                Map mp=(Map) ds.getValue();
                                String password=mp.get("password").toString();
                                if(input_password.equals(password))
                                {
                                    MyData.teacher=username;
                                    startActivity(new Intent(LoginActivity.this,SelectClass.class));
                                }
                                else
                                {
                                    Toast.makeText(LoginActivity.this, "Invalid Combination", Toast.LENGTH_SHORT).show();
                                }

                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                }
                else
                {
                    startActivity(new Intent(LoginActivity.this,AdminActivity.class));
                }

            }
        });
    }

这是我的Xml文件


    <LinearLayout
        android:layout_width="203dp"
        android:layout_height="227dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.427"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.324">

        <EditText
            android:id="@+id/editText10"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Username"
            android:inputType="textPersonName" />

        <EditText
            android:id="@+id/editText11"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Password"
            android:inputType="textPassword" />

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Login" />
    </LinearLayout>
android string android-edittext gettext
1个回答
0
投票

您将代码放置在错误的位置。您需要将其移动到onClick

b1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    String username=ed1.getText().toString();
    String input_password=ed2.getText().toString();
    //rest of your code as it is
© www.soinside.com 2019 - 2024. All rights reserved.