当前位置: 首页 > 知识库问答 >
问题:

不确定EditText或KeyEvent是否未侦听或是XML问题

幸越泽
2023-03-14

我正在尝试制作一个游戏,但我需要用户在从主活动跳到活动2之前填写用户名。如果用户名为空,则不会执行任何操作。如果用户名至少有一个字母,它将启动第二个活动。在我的情况下,它永远不会起作用,我不知道我做错了什么。这是我的密码。

MainActivity.java

public class MainActivity extends AppCompatActivity {
    EditText et1;
    TextView tv1;
    String usuario;

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

        et1 = findViewById(R.id.et1);
        tv1 = findViewById(R.id.tv1);

        /*Button next = findViewById(R.id.boton);
        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent myIntent = new Intent(view.getContext(), MainActivity2.class);
                startActivity(myIntent);
            }
        });*/

        et1.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                usuario = et1.getText().toString();
                if(et1.getText().toString().trim().length() > 0) {
                    if((event.getAction() == KeyEvent.ACTION_DOWN) && (event.getAction() == KeyEvent.KEYCODE_ENTER)) {
                        startActivity2();
                    }
                }
                return false;
            }
        });


    }
 public boolean startActivity2(){
        Intent myIntent = new Intent(this, MainActivity2.class);
        startActivity(myIntent);
        return false;
    }

还有activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/texto"
        android:layout_centerVertical="true"
        android:layout_marginRight="50dp"
        android:layout_marginLeft="50dp"
        android:background="#ff8200"
        android:layout_marginEnd="50dp"
        android:layout_marginStart="50dp" />

    <Button
        android:id="@+id/boton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="jump"
        android:layout_below="@+id/tv1"/>

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/et1"
        android:ems="7"
        android:inputType="text"
        android:maxLines="1"
        android:maxLength="11"
        android:layout_toRightOf="@+id/tv1"
        android:layout_centerInParent="true"/>
</RelativeLayout>

我尝试了ifs!isEmpty(),trim()!等于,绝对没有。

这是舱单,如果需要的话。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.juegocartas3">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.JuegoCartas3">
        <activity
            android:name=".MainActivity3"
            android:exported="false" />
        <activity
            android:name=".MainActivity2"
            android:exported="false" />
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


    </application>

</manifest>

共有1个答案

苏涛
2023-03-14

试试这个-

public class MainActivity extends AppCompatActivity {
    EditText et1;
    TextView tv1;
    String usuario;

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

        
        et1 = findViewById(R.id.et1);
        tv1 = findViewById(R.id.tv1);

        et1.setOnEditorActionListener(new TextView.OnEditorActionListener() {

            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

                if ((actionId & EditorInfo.IME_MASK_ACTION) == EditorInfo.IME_ACTION_DONE) {
                    usuario = et1.getText().toString();

                    if (usuario.trim().length() > 0) {
                        startActivity2();
                    } else {
                        Toast.makeText(getApplicationContext(), " Please add User name", Toast.LENGTH_LONG).show();
                    }
                    return true;
                }
                return false;
            }
        });

   public void startActivity2() {
  Intent myIntent = new Intent(this, MainActivity2.class);
        startActivity(myIntent);
}}
 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : Android-处理EditText中的“ Enter” (28个答案) 5个月前关闭。 如果我有一个EditText,并且我想听用户是否按下了键盘上的“完成”按钮,该如何做? 问题答案: 代码是 在那个“ edittext”是文本字段的ID 查看此链接,只需将setOnKeyListener设置为您的editText即可。

  • 问题内容: 如果某些列返回FALSE,如何显示不同的值, 例如, COLUMN“ BASIC”返回FALSE,但我需要为用户显示YES或NO。情况为FALSE,请返回NO。 问题答案: 如果是varchar或bit,则处理NULL 或者如果只是一点点 编辑:

  • 问题内容: 最近,我阅读了越来越多的关于人们在其HTML标记中使用自定义属性的信息,主要目的是为了嵌入一些额外的数据以供javascript代码使用。 我希望就使用自定义属性是否是一种好习惯以及一些替代方法收集一些反馈。 现在看来似乎真的可以简化 既 服务器端和客户端的代码,但它也不是W3C标准。 我们是否应该在Web应用程序中使用自定义HTML属性?为什么或者为什么不? 对于那些认为自定义属性是

  • 我想知道如何在一个键事件中按下所有的键。例如,我想为Ctrl+F编写一个监听器,它可以切换全屏。如何检查在一个事件中是否同时按下了Ctrl和F?

  • 我有一个听众在Spring的背景下: 根据Spring调试消息,这是在上下文中成功创建的。 当我在应用程序中正确身份验证时,Spring Security不会释放任何事件,因此不会调用此事件侦听器。 我的Spring Security配置是这样的 SecurityWebApplicationInitializer 我使用的是Spring Security 4.2.0。释放。

  • 问题内容: 我有2种不同类型的事件,我希望我的班级能够监听并相应地(和不同地)进行处理。 我试过了: 这给了我一个错误,即您无法使用不同的参数两次实现相同的接口。 除了实现ApplicationEvent的侦听器(或Foo和Bar将实现的某些其他公共接口)并用于确定采用哪种路径之外,我还有其他选择吗? 谢谢! 问题答案: 请参阅此答案结尾的Spring 4.2更新! 春季 <4.2 并不是的。 您