我最近开始编程Android,我遇到了问题。 我试图将这个单词写在EditText中,作为一个字符串。
package com.example.generatoredifrasi;
import android.os.Bundle;
import android.R.layout;
import android.os.Bundle;
public class EditText
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
EditText Text = (EditText) findViewById(R.id.EditText);
String string = Text.getText().toString(); // get the value from the EditText
}
}
findViewById给了我这个错误:The method findViewById (int) is undefined for the type R.layout
为什么呢?我是如何解决这个问题的?
有一种更简单的方法可以将EditText中的单词写成字符串吗?
答案 0 :(得分:2)
您遇到的第一个错误“方法findViewById(int)未定义类型R.layout”是因为您的导入中有import R;
,因此layout
实际上是R.layout
},而不是你的布局视图。如果layout
是对视图的引用,则findViewById()
将是有效的方法调用。
下一个错误,“方法findViewById(int)未定义类型Generatore”看起来是因为您的类Generatore
不会从Activity
继承,因此没有{{1}方法可用。
如果没有看到整个课程,很难确定问题所在。这是获取EditText的String值所需的最低要求:
findViewById()
当然,您可能希望在用户输入后获取文本,可能是在按钮点击或其他内容,因此您可以将public class TestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
EditText Text = (EditText) findViewById(R.id.EditText);
String string = Text.getText().toString(); // get the value from the EditText
}
}
移动到其他地方,只要它在Text.getText().toString()
之后。 setContentView()
。
答案 1 :(得分:1)
方法名称findViewById()
表示您提供了视图的 ID ,而不是布局。因此,请使用您在布局文件中添加的ID。
应如下所示:findViewById(R.id.my_mega_awesome_view);
更新
您尝试获取输入文本的方式是正确的。我想你的问题是你需要找到合适的地点和时间来获取数据。我的意思是用户必须先输入内容才能获得它。试着阅读addTextChangedListener() method
答案 2 :(得分:0)
没有必要提及layout.findViewById(R.id.EditText);您可以简单地引用视图的ID,即EditText视图。
EditText Text = (EditText) findViewById(R.id.EditText);
String string = Text.getText().toString();
答案 3 :(得分:0)
如果您正在处理片段,则应该根据视图调用findViewById
。
您需要先调用
来为视图充气View view = inflater.inflate(R.layout.fragment_layout, container, false);
在onCreate
方法中。
然后你可以通过调用
在页面上找到视图view.findViewById(R.id.my_btn);
请务必在最后return view;
。
答案 4 :(得分:0)
删除导入android.R.layout
。
在正常情况下,您永远不必导入任何R类。