gpt4 book ai didi

android - EditText 字段未显示的问题

转载 作者:太空狗 更新时间:2023-10-29 14:32:30 26 4
gpt4 key购买 nike

我是 Android 编程的新手,很抱歉,如果这是一个简单的问题。

我正在尝试创建一个表单来输入用户数据,但我不断收到以下错误:

"Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@6279d588"

这是我的布局 xml 的样子:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:isScrollContainer="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent">"
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_gravity="top">
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is a test\nsecond line\n"/>
<EditText android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:maxLength="30"
android:maxLines="1"
android:hint="@string/compose_name"></EditText>
<Button
android:id="@+id/new_contact_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/submit" />

</LinearLayout>
</ScrollView>

这是我的类文件的样子:

    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_contact);

//Set up handlers for input text
//nameField = (EditText) findViewById(R.id.name);
//name = nameField.getText().toString();

final EditText nameField = (EditText) findViewById(R.id.name);
nameField.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String strNicknameToSave = nameField.getText().toString();
// TODO: Save Nickname setting (strNicknameToSave)
return true;
}
return false;
}
});

submitButton = (Button) findViewById(R.id.new_contact_button);

// Set up click listeners for all the buttons
submitButton.setOnClickListener(this);

}

如果我去掉 EditText 字段,它就可以正常工作。此外,它只运行了一次,但我无法重复(我在此期间所做的只是删除另一个未使用的布局)。

感谢您的帮助。

最佳答案

final EditText nameField = (EditText) findViewById(R.id.name);

不要将 nameField 声明为“final”——看看它是否有效。

编辑: 啊,好的,抱歉,我没有想清楚。让您的 Activity 实现监听器而不是内联创建它,并将 nameField 作为实例成员...

public class MyActivity extends Activity
implements View.onKeyListener {

EditText nameField = null; // <-- Instance member

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_contact);

nameField = (EditText) findViewById(R.id.name);
nameField.setOnKeyListener(this);
}

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String strNicknameToSave = nameField.getText().toString();
// TODO: Save Nickname setting (strNicknameToSave)
return true;
}
return false;
}
}

关于android - EditText 字段未显示的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5085732/

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