如何同时向两个不同的活动发送值

How to send values to two different activities at the same time

我正在开发一个预算应用程序,但无法将我的费用计入将创建图表的 class。用户将能够输入费用以及指示他们花钱的复选框。当我将值发送到 MainActivity 时,它会读取费用并显示更新后的预算,但是,当我尝试在我的 class 中读取它来制作图表时,图表显示为空并且没有读取值。这是我的费用 Activity(屏幕 2):

public class ExpensesActivity extends AppCompatActivity {

    EditText editTextExpense;
    Expenses expenses;
    String selectedCheckBox;
    CheckBox personalCheckBox;
    CheckBox commuteCheckBox;
    CheckBox billsCheckBox;
    CheckBox funCheckBox;
    CheckBox workCheckBox;
    CheckBox foodCheckBox;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_expenses);

        editTextExpense = (EditText)findViewById(R.id.moneySpent);

        personalCheckBox = (CheckBox)findViewById(R.id.personalCheckBox);
        commuteCheckBox = (CheckBox)findViewById(R.id.commuteCheckBox);
        billsCheckBox = (CheckBox)findViewById(R.id.billsCheckBox);
        funCheckBox = (CheckBox)findViewById(R.id.funCheckBox);
        workCheckBox = (CheckBox)findViewById(R.id.workCheckBox);
        foodCheckBox = (CheckBox)findViewById(R.id.foodCheckBox);


        backToMainMenu();
    }

    public void backToMainMenu() {


        final Button expenseButton = (Button)findViewById(R.id.addExpenseSecondScreen);
        expenseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (personalCheckBox.isChecked()) {
                    selectedCheckBox = personalCheckBox.getText().toString();
                }
                if (commuteCheckBox.isChecked()) {
                    selectedCheckBox = commuteCheckBox.getText().toString();
                }
                if (billsCheckBox.isChecked()) {
                    selectedCheckBox = billsCheckBox.getText().toString();
                }
                if (funCheckBox.isChecked()) {
                    selectedCheckBox = funCheckBox.getText().toString();
                }
                if (workCheckBox.isChecked()) {
                    selectedCheckBox = workCheckBox.getText().toString();
                }
                if (foodCheckBox.isChecked()) {
                    selectedCheckBox = foodCheckBox.getText().toString();
                }


                float expense = Float.parseFloat(editTextExpense.getText().toString());
                Intent intent = getIntent();
                intent.putExtra("expense", expense);
                intent.putExtra("checkBoxText", selectedCheckBox);
                setResult(RESULT_OK, intent);

                finish();



            }
        });
    }


}

使用 BroadcastReceiver 将 BroadcastReceiver 注册到 activity 并在您要发送数据时触发 BroadcastReceiver。使用 LocalBroadcastManager

sample code to create BroadcastReceiver

public class MyReceiver extends BroadcastReceiver {
   @Override
   public void onReceive(Context context, Intent intent) {
      Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
   }
}
registerReceiver(receiver, filter);

并在 onDestroy()

中注销
@Override
protected void onDestroy() {
  super.onDestroy();
  unregisterReceiver(receiver);
}

我不确定您在这里期待什么,但是 onActivityResult 用于通过使用 startActivityForResult 启动 Activity 来获取结果,并且只会在调用 startActivityForResult 的 activity。

由于一次只有一个活动处于活动状态(除非您针对 N 预览),因此您必须使用开始意图将结果数据传递给另一个 activity。

我不知道你到底想要什么,你试过"static"费用和

selectedCheckBox variables.Then 您可以轻松地从任何地方获取值或使用

共同偏好。