0

我有一个有 2 个按钮的主页,按钮 1 已启用,按钮 2 已禁用。button1 将打开有 1 个名为 button3 的按钮的第二页。button3 将意图返回到主页,它应该使 button2 启用。问题是 button2 将在短时间内启用,然后恢复为禁用(阴影)。

主页。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class Enable extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enable);


    Button page1 = (Button) findViewById(R.id.button1);
    page1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {

            Intent myIntent = new Intent(view.getContext(), p2.class);
            startActivityForResult(myIntent, 0);

        }
    });

    Button page2 = (Button) findViewById(R.id.button2);

    page1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {

            Intent myIntent = new Intent(view.getContext(), p2.class);
            startActivityForResult(myIntent, 0);

        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_enable, menu);
    return true;
}

}

第二页

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class p2 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.p2);

    Button page1 = (Button) findViewById(R.id.button3);
    page1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {

            Intent myIntent = new Intent(view.getContext(), Enable.class);
            setContentView(R.layout.activity_enable);
            Button a = (Button) findViewById(R.id.button2);
            a.setEnabled(true);
            startActivityForResult(myIntent, 0);

        }
    });

}
}

主页的 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=".Enable" >

<Button
    android:id="@+id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="104dp"
    android:layout_marginTop="32dp"
    android:text="Button" />

<Button
    android:id="@+id/button2"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button1"
    android:layout_below="@+id/button1"
    android:layout_marginTop="46dp"
    android:enabled="false"
    android:text="Button" />

第 2 页的 XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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/button3"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

4

3 回答 3

1

不是通过 XML 控制按钮的行为,而是控制活动代码中的启用和禁用功能。希望这会有所帮助

于 2013-02-13T14:18:29.737 回答
0

您的问题在于 Intents 的工作方式。您的第二个活动正在做的是访问第一个活动的布局(这是一种不好的做法,因为它们现在紧密耦合),但意图是重新创建 Main 活动 - 这意味着再次调用 onCreate 方法,并且按钮是重新创建 - 将 enabled 属性设置为 false。

要解决您的问题,请查看这篇文章,其中包括 Intent、intent extras(传递数据 - 这将允许您设置 Main Activity 可用于确定是否启用按钮的属性)和 Intent 标志(操纵你的类的实例如何运作 - 一种选择是使用FLAG_ACTIVITY_REORDER_TO_FRONT任何现有的实例并将其放在堆栈的顶部),或者只是搜索标志和额外的信息,他们应该告诉你你需要知道什么.

于 2013-02-13T14:15:58.310 回答
0

Intent 再次启动 Activity,Activity 调用 onCreate 方法,该方法将 Button 2 设置为禁用。

于 2013-02-13T14:16:24.253 回答