首页 > 解决方案 > 从片段开始活动,然后获取回调

问题描述

我正在尝试从我从片段中的意图开始的活动中获取回调。

finish();我以为我可以用 onActivityResult 做到这一点,但是当我进行活动时它似乎没有被调用。这可能在片段中吗?

片段.java

@Nullable
@Override
public View onCreateView(final LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

    getActivity().setTitle("Waiver");
    myView = inflater.inflate(R.layout.waiver_layout, container, false);

    signBtn = myView.findViewById(R.id.signBtn);

    signBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), SignatureActivity.class);

            intent.putExtra("signatureAbleId", device.id);
            intent.putExtra("signatureAbleType", "App\\Models\\Device");

            startActivity(intent);
        }
    });

    return myView;
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
    Log.v("Activity", "The activity has finished");

    if(resultCode == 200){
        saveWaiver();
    }
}

private void saveWaiver(){
    Log.v("Save Waiver", "Saving waiver for you.");
}

签名活动.java

public class SignatureActivity extends AppCompatActivity {

    private Button btnClear;

    private Button btnSave;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        setContentView(R.layout.activity_signature);

        Bundle bundle = getIntent().getExtras();

        if(bundle != null){
            signatureAbleId = bundle.getInt("signatureAbleId");
            signatureAbleType = bundle.getString("signatureAbleType");
        }

        btnClear = findViewById(R.id.btnClear);

        btnSave = findViewById(R.id.btnSave);

        btnClear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mSignaturePad.clear();
            }
        });

        btnSave.setOnClickListener(new View.OnClickListener() {
            setResult(200);

            finish();
        });
    }
}

标签: javaandroidandroid-fragmentsandroid-intentandroid-activity

解决方案


用这个。它会帮助你

Intent intent = new Intent(getContext(), SignatureActivity.class);

代替

Intent intent = new Intent(getActivity(), SignatureActivity.class);

是的,需要改变:

startActivity 到 startActivityForResult


推荐阅读