当前位置: 首页 > 知识库问答 >
问题:

从片段开始活动,然后获得回调

宗政文彬
2023-03-14

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

我以为我可以用onActivityResult来实现这一点,但当我<code>finish()时,它似乎没有被调用 。这在片段中是可能的吗?

Fragment.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.");
}

SignatureActivity.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();
        });
    }
}

共有2个答案

张茂勋
2023-03-14

使用startActivityForResult而不是startActivity

startActivityForResult(intent, 11);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
    if(requestCode == 11){
        if(resultCode == 200){
            saveWaiver();
        }
    }else{
        super.onActivityResult(requestCode, resultCode, data)
    }
}
邴俊民
2023-03-14

使用这个。它会帮助你

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

而不是

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

是需要更改:

开始活动到开始活动为结果

 类似资料:
  • 我有两个碎片,两个碎片上都有一个按钮。当我按下按钮时,我想开始一项新的活动。但我不能让它工作。 我得到的错误:这里的错误:类型不匹配:无法从mFragmentFavorite转换为片段 我做错了什么? 我的碎片寻呼机适配器 收藏夹 如果FavoriteActivity扩展了片段,那么错误就消失了,但是我在findViewById(R.id.mainFavorite)处得到了一个错误 错误为 fin

  • 我已经想从我的Main活动启动我的RecipientFra法规,并从我的Main活动将数据传递到Fra法规。这是我实现的代码。但是碎片没有开始。 我还想知道如何传递intent.set数据,并在碎片中获取数据。目前我有以下代码: 受体片段 主要活动

  • 我在活动C中有四个片段,它们的行为就像标签一样。我必须从一个片段转到一个新的活动X。现在我想回到从活动X到片段的片段。 这是我的主要活动 '公共类MainInterface扩展了ActionBarActivity{ } ' 下面是活动视图中的公共类讨论。onclick侦听器{ ###

  • 亲活性 这意味着,onActivityResult()将在作为该子片段的父片段的片段内部调用refresh。作为连锁反应,refreshDeliveryFragment()将调用这两个子片段中的一个子片段来刷新它们的recyclerview数据。

  • 片段页面有一个EditText,我设置了OnClickListener。当我单击EditText时,它将转到地图活动。在地图活动中获得纬度并将其发送回片段。当我回到片段时,纬度应该显示在EditText上。然而,EditText上没有任何内容。我如何解决这个问题? 这是片段页面中的代码。公共void onMapReady(GoogleMap GoogleMap){mMap=GoogleMap; 这

  • 问题内容: 我希望我的活动显示一个屏幕3秒钟,然后返回上一个屏幕。但是当我使用 但不幸的是,这不起作用。这确实表明活动等待3秒钟然后返回。但是,我希望它在返回之前显示其内容。我该怎么做 ? 问题答案: 您应该删除 阻止ui线程的控件。您不应该阻止用户界面。您可以使用带有延迟的Handler postDelayed,然后使用startActivtiy。 要返回上一个活动,您可以致电。 另外,如果您需

  • 嗨,我已经在应用程序抽屉中创建了片段,现在当我按下一个片段上的后退按钮时,它正在关闭应用程序。

  • fragment类主活动/主活动如何限制我的主活动在从片段的最后一页返回到主活动时不返回到片段的最后一页,就像我有一个主活动,单击按钮该主活动会导致另外3个活动,其中一个活动有片段。片段的最后一页指向home activity,但当我在home activity上后退时,它再次将我引导到片段的最后一页,然后我再次按下back按钮,然后我的应用程序关闭