相关疑难解决方法(0)

如何在Android上将对象从一个活动传递到另一个活动

我正在努力从一个发送我的客户类的对象Activity并在另一个中显示它Activity.

客户类的代码:

public class Customer {

    private String firstName, lastName, Address;
    int Age;

    public Customer(String fname, String lname, int age, String address) {

        firstName = fname;
        lastName = lname;
        Age = age;
        Address = address;
    }

    public String printValues() {

        String data = null;

        data = "First Name :" + firstName + " Last Name :" + lastName
        + " Age : " + Age + " Address : " + Address;

        return data; …
Run Code Online (Sandbox Code Playgroud)

java android object android-intent android-activity

726
推荐指数
20
解决办法
64万
查看次数

使用参数启动活动

我是Android开发的新手.

我想创建并开始一项活动来显示有关游戏的信息.我展示了我需要一个gameId的信息.

如何将此游戏ID传递给活动?游戏ID是绝对必要的,所以我不想创建或启动活动,如果它没有ID.

这就像活动只有一个带有一个参数的构造函数.

我怎样才能做到这一点?

谢谢.

android oncreate android-activity

282
推荐指数
4
解决办法
22万
查看次数

有没有办法在活动之间传递函数引用?

有没有办法在Kotlin和Android中捆绑函数引用,以便可以从其他片段调用函数?例如,我的片段工厂方法如下所示:

    fun newInstance(tryAgainFunction: () -> Unit): TimeOutHandlerFragment {
        val fragment = TimeOutHandlerFragment()
        val bundle = Bundle()

        return fragment
    }
Run Code Online (Sandbox Code Playgroud)

我希望能够将我的tryAgainFunction保存在bundle中以便进一步检索.

非常感谢!

编辑

最后,最合适的解决方案是使用热键的答案,然后在onViewCreated中使用传递的函数初始化一个侦听器.完整的代码如下:

companion object {
    val CALLBACK_FUNCTION: String = "CALLBACK_FUNCTION"

    fun newInstance(tryAgainFunction: () -> Unit): TimeOutHandlerFragment {
        val fragment = TimeOutHandlerFragment()
        val bundle = Bundle()
        bundle.putSerializable(CALLBACK_FUNCTION, tryAgainFunction as Serializable)
        fragment.arguments = bundle
        return fragment
    }
}

override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    try {
        val callback: () -> Unit = arguments.getSerializable(CALLBACK_FUNCTION) as () -> Unit
        btnTryAgain.setOnClickListener …
Run Code Online (Sandbox Code Playgroud)

android kotlin

8
推荐指数
3
解决办法
3488
查看次数

将Serializable数组从一个活动传递到另一个活动时的类Cast Exception

我有一个包含可序列化对象的数组,我试图使用Intent的putExtra()和Bundle的getSerializable().但是,我得到一个类强制转换异常并且不明白为什么.

下面是代码.UserInfo是我自己的类,它实现了Serializable,我能够在活动之间传递单个UserInfo对象.我在尝试使用数组时遇到了这个问题.

发送序列化的代码:

Intent intent = new Intent( JOIN_GROUP ); //JOIN_GROUP is a constant string

String user_ids[] = packet.userIDs();

int length = user_ids.length;
UserInfo users[] = new UserInfo[length];

for ( int i = 0; i < length; ++i )
    users[i] = getUserByID( user_ids[i] );

intent.putExtra( USERS_IN_GROUP, users );
Run Code Online (Sandbox Code Playgroud)

检索序列化的代码:

Bundle extra = intent.getExtras();          
String action = intent.getAction();

if ( action.equals(IMService.JOIN_GROUP) )
{   
    //CLASS CAST EXCEPTION
    UserInfo users[] = (UserInfo[]) extra.getSerializable( IMService.USERS_IN_GROUP ); 
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

在此输入图像描述

我知道我可能只是使用不同的数据结构,但我想理解为什么数组不可行,因为数组是可序列化的?

编辑: SnyersK能够得到一个更简单但类似的方案来工作.所以我尝试了同样的事情,我仍然得到同样的例外.在检索数组时,它将我的测试数组转换为Object,这导致了转换异常.

我的测试对象:

package …
Run Code Online (Sandbox Code Playgroud)

java arrays serialization android

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

在活动之间传递对象

我正在开发一个由多个Activity组成的Android应用程序,并且必须在它们之间传递ab Object,但是由于该对象的类未实现可序列化,因此无法通过intent传递它,该怎么办?我无法修改班级的源代码谢谢:)

public class MyClass { //stuff }
//I can't modify this source code
MyClass m = new MyClass(); //object I have to pass
Run Code Online (Sandbox Code Playgroud)

android android-activity

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