通过Intent发送到MainActivity的数据正在更改

时间:2019-02-22 17:46:50

标签: java android android-room

我有一个活动,该活动通过Intent将更新的信息从我的EditBook活动传递到我的MainActivity

EditBook的按钮:

FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String title = mTitle.getText().toString();
            String author =  mAuthor.getText().toString();
            String publisher = mPublisher.getText().toString();

            Intent replyIntent = new Intent();
            replyIntent.putExtra(EXTRA_ID, getIntent().getIntExtra(EXTRA_ID, -1));
            replyIntent.putExtra(EXTRA_TITLE, title);
            replyIntent.putExtra(EXTRA_AUTHOR, author);
            replyIntent.putExtra(EXTRA_PUBLISHER, publisher);
            replyIntent.putExtra(EXTRA_ISBN, getIntent().getStringExtra(BookView.EXTRA_ISBN));
            setResult(RESULT_OK, replyIntent);
            finish();

        }
    });

我的接收结束于OnActivityResult

if (data.getIntExtra(EditBook.EXTRA_ID, -1) != -1) {

            Book book = new Book(data.getIntExtra(EditBook.EXTRA_ID, -1), data.getStringExtra(EditBook.EXTRA_TITLE),
                    data.getStringExtra(EditBook.EXTRA_AUTHOR), data.getStringExtra(EditBook.EXTRA_PUBLISHER),
                    "1", data.getStringExtra(EditBook.EXTRA_ISBN));

            try {
                asyncWait = mBookViewModel.update(book);
                spinner.setVisibility(View.GONE);

                Toast.makeText(getApplicationContext(), R.string.book_saved, Toast.LENGTH_LONG).show();

                Intent intent = getIntent();
                finish();
                startActivity(intent);

            } catch (ExecutionException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }

asyncWait变量只是从AsyncTask收集结果,以便更新我的UI。

我要编辑的书的书名重新命名为“ 1984(signetClassic)”。在我的EditBook活动中,将其更改为“ 1984”,然后单击“保存浮动操作”按钮。当我逐步通过调试器时,title确实显示了正确的标题,replyIntent mMap显示了正确的标题,但是当我检查MainActivity中的数据时,标题已还原为“ 1984(signetClassic )”。有什么想法为什么Intent Extras在发送时会发生变化?

让我知道您是否需要更多信息。

0 个答案:

没有答案