我有4个名为a1,a2和a3的xml然后我还有一个主xml。在a1中有一个editText和一个ok按钮,在a2中有一个“禁用”的确定按钮。现在,我想要发生的是当在a1中输入的数据是正确的时,它将进入a2然后“禁用”按钮现在应该“启用”。现在我的程序发生了什么,它已经在运行,除了a2中的按钮被启用但它会立即返回被禁用。如何防止它在启用后被禁用?我是android的新手,所以请解释它尽可能简单。提前谢谢。
这是我的代码
主要Activity.java
package com.example.myact1;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnClose = (Button) findViewById(R.id.btnExit);
btnClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
finish();
System.exit(0);
}
});
Button page1 = (Button) findViewById(R.id.btn1);
page1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), a1.class);
startActivityForResult(myIntent, 0);
}
});
}
}
MainActivity.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"
tools:context=".MainActivity" >
<Button
android:id="@+id/btnExit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginBottom="45dp"
android:text="Exit" />
<Button
android:id="@+id/btn1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/btnExit"
android:layout_alignLeft="@+id/btnExit"
android:layout_marginBottom="30dp"
android:text="enter" />
a1 xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btna1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="155dp"
android:text="Enter" />
<EditText
android:id="@+id/eta1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/btna1"
android:layout_centerHorizontal="true"
android:layout_marginBottom="52dp"
android:ems="10" >
<requestFocus />
</EditText>
a1.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a1);
Button page1 = (Button) findViewById(R.id.btna1);
page1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
EditText a1et = (EditText) findViewById(R.id.eta1);
String a1 = a1et.getText().toString();
if (a1.equalsIgnoreCase("abcde")) {
Toast.makeText(getApplicationContext(), "correct", Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(view.getContext(), a2.class);
startActivityForResult(myIntent, 0);
//enables the button in a2
setContentView(R.layout.a2);
Button stage2 = (Button) findViewById(R.id.btna2);
stage2.setClickable(true);
stage2.setEnabled(true);
} else {
Toast.makeText(getApplicationContext(), "wrong", Toast.LENGTH_SHORT).show();
}
}
});
}
这是我的a2.java的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a2);
}
}
a2.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btna2"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="102dp"
android:clickable="false"
android:enabled="false"
android:text="enter" />
答案 0 :(得分:1)
同时添加
stage2.setEnabled(true);
正下方:
Button stage2 = (Button) findViewById(R.id.btna2);
stage2.setClickable(true);
编辑看完所有代码后,我对您的代码进行了两次更正,以便它能够正常运行:
删除a1.java
中的这部分代码:
//enables the button in a2
setContentView(R.layout.a2);
Button stage2 = (Button) findViewById(R.id.btna2);
stage2.setClickable(true);
stage2.setEnabled(true);
请记住,我们决定使用新活动,而不是更改当前活动的contentView
?因为你有这个代码,所以按钮在再次被禁用之前就会启用一段时间。
更改a2.java#onCreate
的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a2);
Button stage2 = (Button) findViewById(R.id.btna2);
stage2.setEnabled(true);
}
在这里你没有启用按钮,那是你的问题。渲染a2 Activity
,您将使用新的视图覆盖已在a1 Activity
中呈现的视图。一个按钮再次禁用的按钮。我用这段代码纠正了这一点。