我正在努力从一个发送我的客户类的对象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) 我是Android开发的新手.
我想创建并开始一项活动来显示有关游戏的信息.我展示了我需要一个gameId的信息.
如何将此游戏ID传递给活动?游戏ID是绝对必要的,所以我不想创建或启动活动,如果它没有ID.
这就像活动只有一个带有一个参数的构造函数.
我怎样才能做到这一点?
谢谢.
有没有办法在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) 我有一个包含可序列化对象的数组,我试图使用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) 我正在开发一个由多个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)