当主要活动中发生事件时禁用按钮

时间:2018-11-09 05:08:43

标签: android

我有两个名为“主要活动”和“第二个活动”的活动。主要活动具有事件处理程序。发生事件时,我需要在第二个活动中禁用按钮。

主要活动

public void myEventListener(int eventID){

  switch (eventID) {
  case : 0
   // disable button of second activity here
   break;
  }
}

5 个答案:

答案 0 :(得分:0)

在“第一个活动”中,创建布尔型静态变量。

示例:

FirstActivity

创建一个布尔型静态全局变量

public static Boolean clicked = false;

onFirstActivity(如果发生事件)。

发生了事件=> clicked = true;,否则为假

SecondActivity

在第二个活动中,从FirstActivity获取静态布尔值

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
              if (FirstActivity.clicked){
                     //Do Nothing
              }else{
                     //Perform action
              }

        }
    });

答案 1 :(得分:0)

禁用按钮非常简单。请按照以下步骤解决问题。

  1. 将全局布尔值定义为“ false”
  2. 在onClickEvent覆盖中,布尔值为“ true”。

然后按如下所示检查布尔值

private boolean isClicked = false;

if(isClicked){
   button.disabled(true);
} else {
   button.disabled(false);
}

请在申请时遇到任何问题。

答案 2 :(得分:0)

首先参考第二个活动,然后将按钮的可见性设置为“消失”或“不可见”。

bool repeat = true;          
while (repeat)
{
     //...
     repeat = userWantsToContinue(repeat);  // note this is NOT a declaration,
                                            // there is only one variable called repeat
}
assert(repeat == false);   // this assertion would invariably succeed, since
                           // repeat has to be false to exit the loop.

答案 3 :(得分:0)

您可以选择LocalBroadCastManager

在MainActivity中要触发方法的任何地方

LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("event-occured"));

在SecondActivity中注册并接收LocalBroadcastManager。

public class SecondActivity extends AppCompatActivity {

private BroadcastReceiver mainActivityReceiver;

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

    mainActivityReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // do whatever you want to do

            Log.d("TAG", "broadcast received");
        }
    };
    LocalBroadcastManager.getInstance(this).registerReceiver(mainActivityReceiver, new IntentFilter("main-activity-initialized"));
}


@Override
protected void onDestroy() {
    super.onDestroy();
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mainActivityReceiver);
}

请不要忘记在SecondActivity的onDestroy方法中注销侦听器。取自here

答案 4 :(得分:0)

这很简单。

  1. 使用private static void SetupIdentityServer(IdentityServerOptions identityServerOptions) { identityServerOptions.UserInteraction.LoginUrl = "/Identity/Account/Login"; } 更改SharedPreference中的数据(可能是布尔值)
  2. 使用MainAcitivity中的SharedPreference.OnSharedPreferenceChangeListener收听特定的数据并在运行时更改按钮状态。

MainActivity.java

SecondActivity

SecondActivity

public class MainActivity extends AppCompatActivity {

SharedPreferences.Editor editor;


public void myEventListener(int eventID){

    switch (eventID) {
        case  0:
            editor = getSharedPreferences("pref",MODE_PRIVATE).edit();
            editor.putBoolean("event",true);

        break;
    }
}

}