簡體   English   中英

如何擴大另一個活動的布局對話框?

[英]How to inflate a layout dialog on another activity?

我目前在SecondActivity.class 在我的代碼中,當我backpress 時,我希望對話框出現在我的 MainActivity.class 上。

這是我關於膨脹對話框布局的代碼。

這出現在 SecondActivity.class 而不是我的主要活動上。

 View dialog = LayoutInflater.from(this).inflate(R.layout.dialog_fmcg_popup, null);
                                    TextView tvfmcg2 = dialog.findViewById(R.id.tv_fmcg2);
                                    tvfmcg2.setText(message);
                                    swipeDismissDialog = new SwipeDismissDialog.Builder(this)
                                            .setView(dialog)
                                            .setOnSwipeDismissListener(new OnSwipeDismissListener() {
                                                @Override
                                                public void onSwipeDismiss(View view, SwipeDismissDirection direction) {
                                                    Preferences.setString(Prefkey.last_qualified_fmcg_voucher_on_remove, message);
                                                }
                                            })
                                            .setFlingVelocity(0)
                                            .setOverlayColor(0)
                                            .build()
                                            .show();

那么你可以使用的是ActivityForResult()方法。

您需要開始與您正在做的事情略有不同的活動。

startActivityForResult(new Intent(this, SecondActivity.class), 80);

然后在你的SecondActivity.class你覆蓋onBackPressed()方法如下

 @Override
    public void onBackPressed() {
        setResult(Activity.RESULT_OK,new Intent());
        finish();
    }

在你的FirstActivity.class你必須覆蓋onActivityResult()方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 80) {
        if(resultCode == Activity.RESULT_OK){
            View dialog = LayoutInflater.from(this).inflate(R.layout.dialog_fmcg_popup, null);
        TextView tvfmcg2 = dialog.findViewById(R.id.tv_fmcg2);
        tvfmcg2.setText(message);
        swipeDismissDialog = new SwipeDismissDialog.Builder(this)
            .setView(dialog)
            .setOnSwipeDismissListener(new OnSwipeDismissListener()
            {
                @Override
                public void onSwipeDismiss(View view, SwipeDismissDirection direction)
                {
                    Preferences.setString(Prefkey.last_qualified_fmcg_voucher_on_remove, message);
                }
            })
            .setFlingVelocity(0)
            .setOverlayColor(0)
            .build()
            .show();
        }
    }
}

嘗試調用方法而不是在MainActivity onStartonResume中顯示對話框

如果你想在你的 MainActivity 而不是你的 SecondActivity 上顯示它,你必須像這樣啟動 SecondActivity:

startActivityForResult(yourIntent, SECOND_ACTIVITY_KEY)

在 BackPresses 上,您可以像這樣設置結果

Intent intent=Intent()
intent.putExtra("MESSAGE",message)
setResult(2,intent)

然后在 MainActivity 上,您可以監聽結果並調用您的對話框。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    // Check which request we're responding to
    if (requestCode == SECOND_ACTIVITY_KEY) {
        // Make sure the request was successful
        if (resultCode == Activity.RESULT_OK) {
            // The user picked a contact.
            // The Intent's data Uri identifies which contact was selected.

            // Do something with the contact here (bigger example below)
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM