方法findViewById(int)未定义类型R.layout

时间:2014-10-20 15:28:41

标签: java android android-edittext findviewbyid

我最近开始编程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中的单词写成字符串吗?

5 个答案:

答案 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类。