我有一个活动A> B.在活动A中有2个按钮。 button1处于启用状态,button2处于禁用状态。当您单击button1时,您将转到活动B中的活动B.有一个按钮,当您单击时,您将返回活动A,然后按钮2应设置为启用。问题是在将其设置为启用状态后,它将变回禁用状态。你们能给我一个更好的方法来启用按钮吗?
这是我的活动A
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);
page2.setEnabled(false);
page1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), p2.class);
startActivityForResult(myIntent, 0);
}
});
}
这是我的活动B
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);
}
});
}
}
答案 0 :(得分:1)
为什么不尝试这样的事情: -
发送是否要启用或停用按钮,boolean
来自Activity
B Intent
作为myIntent.putExtra("isEnabled", "enabled");
的一部分
Activity
在boolean
A中,检查从活动B发送的onCreate()
。如果是,则启用 null
中的按钮, if,false
或Intent intent=getIntent();
String isEnabled = intent.getStringExtra("isEnabled");
if(isEnabled==null||isEnabled.equals("disabled")){
page2.setEnabled(false);
}
else{
page2.setEnabled(true);
}
,禁用。
Activity
无论如何,这将解决您的问题。这样,您可以启用/禁用该按钮,无论您来自哪个{{1}}。
答案 1 :(得分:0)
您无需从类p2调用Enable。你只需要调用finish()。这将返回到调用Activity,在这种情况下是Enable。 另一种方法是在从p2调用Enable时设置一个额外的方法。所以它会像:
myIntent.putExtra("isEnabled", "enabled");
并在Enabled活动的getIntent()中执行以下操作:
getIntent();
String isEnabled = intent.getStringExtra("isEnabled");
page2.setEnabled(isEnabled.equals("enabled") ? true : false) ;
答案 2 :(得分:0)
在B活动中
Button page1 = (Button) findViewById(R.id.button3);
page1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(B.this, A.class);
myIntent.putExtra("Button", "enabled");
startActivity(myIntent);
}
});
}
在活动中
Intent intent=getIntent();
String enable = intent.getStringExtra("Button");
if(enable.equals("enabled")){
page2.setEnabled(true);
}
else{
page2.setEnabled(false);
}
答案 3 :(得分:0)
您的代码应如下所示:
public class ActivityA extends Activity {
public final static int SHOW_ACTIVITY_B = 10;
public final static String RESULT_ENABLE_BTN2 = "enable_btn2";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enable);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent myIntent = new Intent(view.getContext(), ActivityB.class);
startActivityForResult(myIntent, SHOW_ACTIVITY_B);
}
});
Button btn2 = (Button) findViewById(R.id.button2);
btn2.setEnabled(false);
btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// Do whatever you need with button #2
// ...
}
});
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
if( resultCode == Activity.RESULT_CANCELED ) {
// in this case ActivityB returned this code explicitly,
// or any result at all, or even crashed
}
else if( requestCode == SHOW_ACTIVITY_B ) {
btn2.setEnabled( data.getBooleanExtra( RESULT_ENABLE_BTN2, false ) );
}
}
}
虽然ActivityB
应如下所示:
public class ActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.p2);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent output = getIntent();
output.putExtra( ActivityA.RESULT_ENABLE_BTN2, true );
setResult(RESULT_OK, output);
finish();
}
});
}
}
请注意,对startActivityForResult(...)
的调用应与被调用活动的setResult(...)
+ finish()
结合使用,以便正确使用此功能。您以前的代码根本不使用它,因为第二个活动会启动第一个活动的新实例。我希望这会有所帮助。
答案 4 :(得分:0)
你应该使用onActivityResult()
。我看到你开始活动b喜欢
Intent myIntent = new Intent(view.getContext(), p2.class);
startActivityForResult(myIntent, 0);
尝试:
单击page1按钮时,在B Activity
中,只需编写这些代码(仅限这些代码):
setResult(0,null);
finish();
然后在A Activity
中使用这些代码,首先将您的Button page2
Button page1
设为全局。然后
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == 0)
page2.setEnabled(true);
}