Как отправить данные из фрагмента в Activity в Android - PullRequest
0 голосов
/ 08 мая 2019

В моем приложении я хочу использовать Fragment и Activity, и я хочу startActivity из этого fragment, и я должен отправить данные с startActivity
Я пишу ниже коды, но при запуске приложения показывают null в activity!
Коды фрагментов:

homeDashboard_giftInfoLayout.setOnClickListener {
    val intent = Intent(requireContext(), DashboardChargeWalletActivity::class.java)
    intent.putExtra(USER_WALLET_PRICE, response.user.wallet.credit)
    intent.putExtra(USER_CHARGED_VALUE, 0)
    startActivity(intent)
}

Коды деятельности:

userWallet = intent?.getStringExtra(USER_WALLET_PRICE).toString()
userWallet.let {
    //User wallet
    dashboardChargeWallet_userWallet.text =
        "${getString(R.string.walletInventory)}: $userWallet ${getString(R.string.toman)}"
}

при нажатии на кнопку startActivity я показываю это response.user.wallet.credit в тост .
Но в activity покажи мне ноль !

Я использовал Kotlin для языка.

Как я могу это исправить?

Ответы [ 3 ]

1 голос
/ 08 мая 2019

эта строка:

intent.putExtra(USER_WALLET_PRICE, response.user.wallet.credit)

Я подозреваю, что response.user.wallet.credit не строка. Итак, строка ниже:

userWallet = intent?.getStringExtra(USER_WALLET_PRICE).toString()

не найдет дополнительную строку с ключом USER_WALLET_PRICE. Проверьте, какой тип response.user.wallet.credit, int? долго? сериализации? и убедитесь, что вы получите тот же тип

1 голос
/ 08 мая 2019

вам нужно использовать намерение, подобное этому, из фрагмента.

homeDashboard_giftInfoLayout.setOnClickListener {
 val intent = Intent(activity, DashboardChargeWalletActivity::class.java)
 intent.putExtra(USER_WALLET_PRICE, response.user.wallet.credit)
 intent.putExtra(USER_CHARGED_VALUE, 0)
 startActivity(intent);
}

также вы можете использовать requireActivity

val intent=Intent(requireActivity(),DashboardChargeWalletActivity::class.java)

Надеюсь, это сработает для вас.

0 голосов
/ 08 мая 2019

попробуйте, это может помочь

    Intent intent = new Intent(getActivity(), LoadActivity.class);
    intent.putExtra(USER_WALLET_PRICE, response.user.wallet.credit)
    intent.putExtra(USER_CHARGED_VALUE, 0)
    startActivity(intent);
...