我正在将注册屏幕作为我的应用程序中的第一页,在我放置的MainActivity.java中:
public class MainActivity extends Activity {
private EditText username=null;
private EditText password=null;
private TextView attempts;
private Button login;
int counter = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username = (EditText)findViewById(R.id.editText1);
password = (EditText)findViewById(R.id.editText2);
attempts = (TextView)findViewById(R.id.textView3);
attempts.setText(Integer.toString(counter));
login = (Button)findViewById(R.id.button1);
}
public void login(View view){
if(username.getText().toString().equals("admin") &&
password.getText().toString().equals("admin")){
Toast.makeText(getApplicationContext(), "Redirecting...",
Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getApplicationContext(), "Wrong Credentials",
Toast.LENGTH_SHORT).show();
attempts.setBackgroundColor(Color.RED);
counter--;
attempts.setText(Integer.toString(counter));
if(counter==0){
login.setEnabled(false);
}
}}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
在我放的xml页面中:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="30dp"
android:layout_marginTop="92dp"
android:text="username"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="36dp"
android:text="password"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_marginLeft="30dp"
android:layout_toRightOf="@+id/textView1"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/editText1"
android:ems="10"
android:inputType="textPassword" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="72dp"
android:text="attempts" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/textView3"
android:layout_below="@+id/textView3"
android:layout_marginTop="42dp"
android:text="login" />
</RelativeLayout>
我写的错误是在编写时的java代码中:
username = (EditText)findViewById(R.id.editText1);
无法解析editText1或不是字段。 与editText2,textView3和button1
相同请帮忙吗?
答案 0 :(得分:1)
在布局文件中分配@+id/editText1
之类的ID时,IDE通常应该为您在R.java中生成值。如果代码生成步骤由于某种原因没有发生或失败,那么R.id.editText1将不可用,您将得到您描述的错误。
您使用的是哪个IDE?你能清理和重建项目吗?
您是否看过R.java,看看您的场地是否在那里?对于任何布局文件中的每个ID,您应该看到在那里生成的常量,如下所示:
public final class R {
(...)
public static final class id {
public static final int editText1 = ...;
}
(...)
}
答案 1 :(得分:0)
首先,save
文件(布局),然后尝试clean and build the project
然后: 将声明更改为:
private EditText username;
private EditText password;
同时更改l ogin method
的名称,因为您有button
login
到loginFunction
,例如,
public void loginFunction(View view)
将此方法与login
中的按钮setOnclickListener
相关联:
login.setOnclickListener(loginFunction)
答案 2 :(得分:0)
首先清理并重建您的项目。如果没有运气,请尝试以下方法。
有时在缺少结束标记或类似内容时会在xml布局文件中发生这种情况。只需仔细检查你的xml,确保你没有忘记一些东西。也
check <?xml version="1.0" encoding="utf-8"?>
位于布局文件的顶部。
答案 3 :(得分:0)
我有自己的解决方案。希望对你有帮助。
在Project->Clean
中,我选择“清除下面选择的项目”,选择我的项目并选中“立即开始构建”,“仅构建所选项目”。
然后转到Window->Preferences->General->Keys
,搜索“Build clean”并为此命令输入我自己的绑定。例如, Ctrl + D
然后,当我按 Ctrl + D 并输入我已清理并构建。