onActivityResult() 在 Android 上不工作

onActivityResult() not working on Android

我正在尝试使用 onActivityResult 发送标题,我查看了相同任务的 google 实现,但它对我不起作用。有人可以帮忙吗?

mainActivity 中 onActivityResult 的代码。

public void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        System.out.println("There is something coming to this function" + requestCode);
        if(requestCode == NEW_TITLE_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK){
            Title title = new Title(data.getStringExtra(notesSection.EXTRA_REPLY));
            mTitleViewModel.insert(title);
        }else{
            Toast.makeText(getApplicationContext(), R.string.empty_not_saved, Toast.LENGTH_LONG).show();
        }
    }

代码在我的笔记部分activity。

finishFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // System.out.println("Button Has Been Clicked From Notes Section");
                Intent replyIntent = new Intent();
                if (TextUtils.isEmpty(titleEdit.getText())){
                    // System.out.println("Empty?");
                    setResult(RESULT_CANCELED, replyIntent);
                }else{
                    // System.out.println("Sending Something Supposedly");
                    String title = titleEdit.getText().toString();
                    // System.out.println("Sending " + title);
                    replyIntent.putExtra(EXTRA_REPLY, title);
                    setResult(RESULT_OK, replyIntent);
                }
                finish();
//                startActivity(new Intent(notesSection.this, MainActivity.class));
            }
        });

仅供参考:当我在 onActivityResult 函数中打印某些内容时,我的 运行 终端上没有显示任何内容,我不知道这是为什么,但我认为有些人没有达到该功能原因。如有必要,我会发送更多代码。 谢谢

在你的第一个 activity 中尝试从第二个开始 activity 像这样

static int NEW_TITLE_ACTIVITY_REQUEST_CODE = 1;

 @Override
protected void onCreate(Bundle savedInstanceState) {
    ---

    ---

    ---

// i assume you are starting activity on some button click
// so add following line in you button on click event

startActivityForResult(new Intent(MainActivity.this,notesSection.class),NEW_TITLE_ACTIVITY_REQUEST_CODE);
}

然后在您的第一个 ACTIVITY

中覆盖以下方法
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if (resultCode == Activity.RESULT_OK && requestCode == NEW_TITLE_ACTIVITY_REQUEST_CODE)
    {
         // do whatever you want   
    }
}

同时在点击侦听器上更新您的 finish fab

finishFab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent replyIntent = new Intent();
            if (TextUtils.isEmpty(titleEdit.getText())){
                setResult(RESULT_CANCELED, replyIntent);
            }
            else{
                replyIntent.putExtra("TITLE", titleEdit.getText().toString());
                setResult(RESULT_OK, replyIntent);
            }
            finish();
        }
    });

实际上,这个程序最近发生了变化。您可能想看一下 official documentation 以便您可以根据需要实施它。