【问题标题】:Multiple activity instances run?多个活动实例运行?
【发布时间】:2013-05-07 10:08:28
【问题描述】:

我有 2 项活动。 在我的第一个中,我有一个按钮,当我单击它时,它会启动第二个活动。 但是当我回到我的第一个并且我第二次单击我的按钮时,我的第二个活动开始但我必须返回两次才能回到我的第一个活动。

如果再次点击一次,则必须返回 3 次......

请帮帮我。并提前谢谢你:)

这是我的代码:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this._that = this;
    _progressDialog = new ProgressDialog(this);

   EditText editText = (EditText) findViewById(R.id.MainActivityEditText);
   editText.setText("T_F81D4FA3F8");

   Button button = (Button) findViewById(R.id.MainActivityButton);
   button.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    if(v.getId() == R.id.MainActivityButton ) {
        Log.w("MainActivity", "onClick");
        _progressDialog.setMessage("Chargement en cours");
        _progressDialog.show();

        new Thread(new Runnable() {
            public void run() {
                EditText editText = (EditText) findViewById(R.id.MainActivityEditText);
                String s = editText.getText().toString().replace(" ", "");
                Log.i("EditText", s);
                ID_APPLICATION = s;
                //if (! Datas.getInstance().isUpdateDatas())
                    WebService.getInstance().datas(_that);
                LocalBroadcastManager.getInstance(_that).registerReceiver(datasUpdateFail, new IntentFilter("datas-update-fail"));
                LocalBroadcastManager.getInstance(_that).registerReceiver(datasUpdate, new IntentFilter("datas-update"));
            }
        }).start();


    }
}


BroadcastReceiver datasUpdate = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
          myStartActivity("ACCUEIL");
          _progressDialog.dismiss();
      }
};
BroadcastReceiver datasUpdateFail = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
          Toast.makeText(MainActivity.this, "Erreur : Veuillez verifier votre identifiant ou votre connexion", Toast.LENGTH_SHORT).show();
          _progressDialog.dismiss();
      }
};

public void myStartActivity(String page){
    Intent intent = new Intent(this, PageActivity.class);
    Bundle bundle = new Bundle();
    bundle.putString("page", page);
    intent.putExtras(bundle);
    this.startActivity(intent);
}

【问题讨论】:

  • 如何从第二项活动返回到第一项?通过单击设备上的返回键或屏幕上的软按钮?
  • 请提供第二个活动代码。

标签: android android-activity redundancy


【解决方案1】:

注销接收者

 @Override
protected void onPause() {
    // Unregister receiver
    LocalBroadcastManager.getInstance(this).unregisterReceiver(datasUpdate);
    LocalBroadcastManager.getInstance(this).unregisterReceiver(datasUpdateFail);
    super.onPause();
}

【讨论】:

    【解决方案2】:

    每次您参加此活动时,您都会注册收到。因此,您第二次回来时,您注册了 2 个接收器。因此,当您单击按钮 2 时,将打开活动。

    当你完成它后,尝试让regiseter 变得无趣。例如。在开始新活动之前。

     LocalBroadcastManager.getInstance(_that).unregisterReceiver(datasUpdateFail);
     LocalBroadcastManager.getInstance(_that).unregisterReceiver(datasUpdate);
    

    【讨论】:

      猜你喜欢
      • 2023-04-11
      • 1970-01-01
      • 2018-01-29
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多