1

a1、a2、a3という名前の4つのxmlがあり、メインxmlもあります。a1にはeditTextとokボタンがあり、a2には「無効」になっているokボタンがあります。さて、私がしたいのは、a1に入力されたデータが正しい場合、それはa2に進み、そこにある「無効」ボタンが「有効」になっているはずです。私のプログラムで起こったことは、a2のボタンが有効になっていることを除いて、すでに実行されていますが、すぐに無効に戻ります。有効にした後で無効になるのを防ぐにはどうすればよいですか?私はAndroidを初めて使用するので、できるだけ簡単に説明してください。前もって感謝します。

これが私のコードです

Main 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" />

4

1 に答える 1

1

また追加

stage2.setEnabled(true);

右下:

Button stage2 = (Button) findViewById(R.id.btna2);
stage2.setClickable(true);

編集すべてのコードを確認した後、コードが機能するようにコードに行った2つの修正を次に示します。

のコードのこの部分を削除します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 をレンダリングすると、a1で既にレンダリングしたビューを新しいActivityビューで上書きします。Activityボタンがもう一度無効になっているもの。このコードでそれを修正します。

于 2013-01-04T17:58:57.413 に答える