gpt4 book ai didi

java - 在不同的文件类 java Android 中调用 EditText 值

转载 作者:行者123 更新时间:2023-11-29 20:37:35 26 4
gpt4 key购买 nike

我正在学习使用外部类(class)。这个项目只是一个例子。我有一个扩展 Activity 的类,在这个类中我想访问我的登录按钮。登录按钮将运行在 OnClickListenerLogin() 中实现 OnClickListener 的外部类。

在 OnClickListenerLogin 中,我想在 Login.xml 中获取 EditText 值。但每当我调用它时,该值都会返回“”。

我的代码中缺少什么以及我的 OnClickListenerLogin 的正确代码是什么以便我可以在 Login.xml 中获取 EditText 值?

登录.xml

<ScrollView 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
tools:context="com.example.phonekiosk.LoginActivity" >

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff">

<!-- Login Form -->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dip">
<!-- Email Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#372c24"
android:text="Username"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_marginBottom="20dip"
android:singleLine="true"
android:id="@+id/txtUsername"/>
<!-- Password Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#372c24"
android:text="Password"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:singleLine="true"
android:password="true"
android:id="@+id/txtPassword"/>
<!-- Login Button -->
<Button
android:id="@+id/btnLogin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="Login" />
</LinearLayout>
<!-- Login Form Ends -->
</RelativeLayout>
</ScrollView>

电话亭.java

package com.example.phonekiosk;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class LoginActivity extends Activity {
Button btnLogin;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);

btnLogin = (Button) findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(new OnClickListenerLogin());
}
}

OnClickListenerLogin.java

package com.example.phonekiosk;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.EditText;
import android.widget.Toast;

public class OnClickListenerLogin implements OnClickListener {

@Override
public void onClick(View view) {
final Context context = view.getContext();

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View formLogin = inflater.inflate(R.layout.login, null);

final EditText txtUsername = (EditText) formLogin.findViewById(R.id.txtUsername);
final EditText txtPassword = (EditText) formLogin.findViewById(R.id.txtPassword);

String username = txtUsername.getText().toString();
String password = txtPassword.getText().toString();

Log.d("test", username + "-" + password);
}
}

最佳答案

您使用的 View 与 LoginActivity 创建的 View 不同。您在 onClick 中膨胀 View 的代码需要删除。

您可以通过为它实现一个构造函数,将对用户名和密码的 EditText 的引用传递给您的 OnClickListenerLogin。

public class OnClickListenerLogin implements OnClickListener {

private EditText txtUsername;
private EditText txtPassword;

public OnClickListenerLogin (EditText userEditText, EditText passwordEditText) {
this.txtUsername = userEditText;
this.txtPassword = passwordEditText;
}

@Override
public void onClick(View view) {
String username = txtUsername.getText().toString();
String password = txtPassword.getText().toString();

Log.d("test", username + "-" + password);
}
}

在登录 Activity 中,您可以执行以下操作

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);

btnLogin = (Button) findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(
new OnClickListenerLogin(
(EditText) findViewById(R.id.txtUsername),
(EditText) findViewById(R.id.txtPassword));
}

免责声明:我在这里直接输入了代码,没有检查是否存在拼写错误造成的编译问题。我希望你得到解决方案的本质

关于java - 在不同的文件类 java Android 中调用 EditText 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299253/

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