小编Mar*_*man的帖子

在 Kotlin 中以编程方式将 Fragment 添加到 Activity

我已经构建了一个片段,我希望将其放置在活动中。

到目前为止,我的代码如下所示:

MainActivity.kt

class MainActivity: AppCompatActivity() {

    @Inject
    lateinit var teamInfoModule: TeamInfoModule;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        DaggerServiceModuleComponent.create().inject(this)

        val bundle = Bundle()
        val teamArrayList: ArrayList<Team> = this.teamInfoModule.getAllTeamData()
        val homeFragment = HomeFragment()

        bundle.putParcelableArrayList("teamData", teamArrayList)
        homeFragment.arguments = bundle

        val fragmentManager: FragmentManager = supportFragmentManager
        val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
        fragmentTransaction.replace(R.id.home_fragment, homeFragment).commit()
    }
}
Run Code Online (Sandbox Code Playgroud)

活动主文件

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        android:id="@+id/activity_main">
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

HomeFragment.kt

class HomeFragment @Inject constructor(): Fragment() {

    lateinit var team: Team

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, …
Run Code Online (Sandbox Code Playgroud)

xml android android-fragments kotlin

5
推荐指数
2
解决办法
4万
查看次数

可分割 Kotlin 的可分割对象列表

我有一个可分割的团队课程

@Parcelize
class Team(var name: String, var teamMembers: List<String>, var id: UUID): Parcelable
Run Code Online (Sandbox Code Playgroud)

我有一项服务返回(当前硬编码的)团队列表:

@Module 
class TeamInfoModule @Inject constructor(): ITeamInfoModule {

    @Provides
    override fun getAllTeamData(): List<Team> { ... }

}
Run Code Online (Sandbox Code Playgroud)

我希望能够将团队列表从活动传递到片段中,如下所示:

class MainActivity: AppCompatActivity() {

    @Inject
    lateinit var teamInfoModule: TeamInfoModule;

    lateinit var team: Team;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        DaggerServiceModuleComponent.create().inject(this)

        val bundle = Bundle()
        val teamArrayList: List<Team> = this.teamInfoModule.getAllTeamData()
        val homeFragment = HomeFragment()

        bundle.putParcelable("teamData", teamArrayList)
        homeFragment.arguments = bundle

    }
}
Run Code Online (Sandbox Code Playgroud)

这会引发以下错误:Type Mismatch. Required: Parcelable? Found: List<Team>.

我知道单个团队可以传递给我的片段,因为它不会引发错误。

我的问题是,是否有一个我还没有找到的实用程序可以以某种方式将列表序列化为 …

android parcelable kotlin

2
推荐指数
1
解决办法
1613
查看次数

截断字符串JavaScript

我的任务是"截断一个字符串(第一个参数),如果它超过给定的最大字符串长度(第二个参数).返回带有...结尾的截断字符串.

请注意,将三个点插入末尾将增加字符串长度.

但是,如果给定的最大字符串长度num小于或等于3,则在确定截断的字符串时,添加三个点不会增加字符串长度."

我写了代码:

function truncateString(str, num) {
  if (num > str.length){
    str.slice(num);
    return str.append("...");
  } 
  else if (num < 3) {
    str.slice(3);
    return str.append("...");
  }
  else {
    return "This is not a string";
  }

}

truncateString("A-tisket a-tasket A green and yellow basket", 11);
Run Code Online (Sandbox Code Playgroud)

但是,它没有做我需要它做的事情并且在每次运行时返回"这不是一个字符串".谁能帮我?

javascript string

1
推荐指数
1
解决办法
9268
查看次数