如何在一个Activity中保存字符串将其传递给另一个Activity,然后再回到第一个活动?

时间:2014-10-28 18:36:26

标签: android android-activity

在一项活动中,我有2个按钮,这些按钮可以从数据库中获取文本。我有一个问题,首先我设置第一个按钮文本,然后单击其他按钮,然后转到另一个活动从数据库中选择我的文本,但当我回到上一个活动时,第一个按钮文本为空。 我尝试使用Intent并将其传递给另一个活动然后检索它但它没有帮助!

如果您之前测试过,您有什么看法?

最好的问候

        btnIncomeFrom= (Button) findViewById(R.id.btnDaryaftAz);
    btnIncomeFrom.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

        startActivity(new Intent(NewIncomeActivity.this, IncomeListActivity.class));
        }
    });
    IncomeTitle = getIntent().getStringExtra("ThirdLevelIncome");
    btnIncomeFrom.setText(IncomeTitle);

    btnSettleTo= (Button) findViewById(R.id.btnVarizBe);
    btnSettleTo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent = new Intent(NewIncomeActivity.this, SettleToListActivity.class);
            //intent.putExtra("IncomeTitle",IncomeTitle);
            startActivity(intent);
        }
    });
    btnSettleTo.setText(getIntent().getStringExtra("ThirdLevelSettle"));

2 个答案:

答案 0 :(得分:1)

在我看来,更好的方法是使用startActivityForResult()方法。例如:

final int JADID_ACTIVITY_RESCODE = 1;
@Override
    public void onClick(View view) {
    startActivityForResult(new Intent(DaryafteJadidActivity.this, IncomeListActivity.class),JADID_ACTIVITY_RESCODE);
    }
/* invoked when started activity returns */
protected void onActivityResult(int requestCode, int resultCode,
         Intent data) {
     if (requestCode == JADID_ACTIVITY_RESCODE) {
         if (resultCode == RESULT_OK) {
             String retrived_data = data.getStringExtra("STRING_NAME","");
         }
     }
 }

在Activity中,检索数据后,您可以执行以下操作:

Intent resultIntent = new Intent();
resultIntent.putExtra("STRING_NAME",retrived_value);
setResult(RESULT_OK,resultIntent );
finish();

答案 1 :(得分:0)

我只用一个条件解决了我的问题:

        if(getIntent().getIntExtra("temp",0)== 1)
    {
        btnIncomeFrom.setText(getIntent().getStringExtra("FinalIncomeTitle"));
    }
    else
    {
        IncomeTitle = getIntent().getStringExtra("ThirdLevelIncome");
        btnIncomeFrom.setText(IncomeTitle);
    }

        btnSettleTo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(NewIncomeActivity.this, SettleToListActivity.class);                
            intent.putExtra("IncomeTitle",IncomeTitle);
            startActivity(intent);
        }
    });

当我想回到之前的活动时,我传递了值为1的Final和我传递给第二个活动的FinalIncomeTitle

                    intent.putExtra("FinalIncomeTitle",getIntent().getStringExtra("IncomeTitle"));
                intent.putExtra("temp",1);