首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用safeargs,我得到"required Bundle found Bundle?“

使用safeargs,我得到"required Bundle found Bundle?“
EN

Stack Overflow用户
提问于 2019-01-31 23:08:22
回答 5查看 1.7K关注 0票数 3

我正在使用safeargs传递参数。在收到的片段中,我得到了一个编译错误:'Required Bundle Found Bundle?‘。看不到哪里出了差错。

在谷歌上搜索,检查文本和udacity教程

出现错误的位置(在“参数”处)

代码语言:javascript
复制
package com.example.android.naveditoryoutube

import android.arch.lifecycle.ViewModelProviders
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.fragment_two_fragment.*

class FragmentTwo : Fragment() {

    companion object {
        fun newInstance() = FragmentTwo()
    }

    private lateinit var viewModel: FragmentTwoViewModel

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_two_fragment, container, false)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        viewModel = ViewModelProviders.of(this).get(FragmentTwoViewModel::class.java)

    }

    override fun onStart() {
        super.onStart()
        var args = FragmentTwoArgs.fromBundle(arguments)
        argText.text = args.calculated_Number
    }

}

发送代码:

代码语言:javascript
复制
package com.example.android.naveditoryoutube

import android.arch.lifecycle.ViewModelProviders
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.navigation.Navigation
import kotlinx.android.synthetic.main.fragment_one_fragment.*


class FragmentOne : Fragment() {


    companion object {
        fun newInstance() = FragmentOne()
    }

    private lateinit var viewModel: FragmentOneViewModel


    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {



        return inflater.inflate(R.layout.fragment_one_fragment, container, false)

    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        viewModel = ViewModelProviders.of(this).get(FragmentOneViewModel::class.java)

        var calculated_Number : String = viewModel.sendNewNumber().toString()

        button_calculate.setOnClickListener{view: View ->
            if (number_box.text.isNotEmpty()){
                var number_entered: String = number_box.text.toString()
                viewModel.findNewNumber((number_entered))
                calculated_Number = viewModel.sendNewNumber()
               Navigation.findNavController(view).navigate(FragmentOneDirections.actionFragmentOneToFragmentTwo(calculated_Number))
            }


        }
    }

}

错误出现在这里var args =FragmentTwoArgs.fromBundle(参数)

arguments应该是Bundle,但Bundle是吗?

EN

回答 5

Stack Overflow用户

发布于 2019-02-03 05:03:55

我必须更改它才能使用!

var args =FragmentTwoArgs.fromBundle(参数!!)

票数 5
EN

Stack Overflow用户

发布于 2020-05-27 13:29:34

使用requireArguments()而不是arguments!!

票数 2
EN

Stack Overflow用户

发布于 2019-02-04 01:54:07

你不应该使用FragmentTwoArgs.fromBundle(arguments),只要使用:

代码语言:javascript
复制
val args: FragmentTwoArgsby navArgs()

在你的方法调用中:

代码语言:javascript
复制
val amount = args.amount

这是我的工作,请参阅官方指南:https://developer.android.com/topic/libraries/architecture/navigation/navigation-pass-data

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54463535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档