sách gpt4 ai đã đi

Chuyển các đối tượng tùy chỉnh từ Activity này sang Activity khác bằng ngữ cảnh Activity?

In lại 作者:行者123 更新时间:2023-12-01 11:18:47 34 4
mua khóa gpt4 Nike

问题有点复杂,首先, Activity A 和 Activity B 的 list 中都有 android:noHistory = true 。我有一个自定义 serialized 类,假设 Lớp học của tôi ,该自定义类实际上通过构造函数存储 Activity B 的上下文。我在 Activity B 中有一个类型为 Lớp học của tôi 的对象名称 obj ,现在我想通过 Intent 将该对象传输到 Activity C ,当hiện hữu Activity B 中按下 >后退cái nút.

从 Activity A 中,有一个按钮可以毫无问题地打开 Activity B,当我尝试在 onBackPressed() 中通过 B 打开 Activity C 并传输可序列化对象时,问题就开始了。我在 Activity C 中收到 VÔ GIÁ TRỊ.

[更新]我的类(class):

@SuppressWarnings("serial")
public class MyClass implements Serializable{

private final String SHAREDKEY_HIGHSCORE = "High Scores";
private final String FIELDKEY_HIGHSCORE = "HighScore";
private final String FIELDKEY_HIGHTIME = "HighTime";
private SharedPreferences sp;
private SharedPreferences.Editor spEditor;

public MyClass(Context context) {
resetScore();
sp = context.getSharedPreferences(SHAREDKEY_HIGHSCORE, Context.MODE_PRIVATE);
spEditor = sp.edit();
}

public void resetScore(){
newTime = 0;
newScore = 0;
highTime = 0;
highScore = 0;
}
}

Activity B:

public class ActivityB extends Activity {
MyClass scores;
@Ghi đè
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
scores = new MyClass(this);
}

@Ghi đè
public void onBackPressed() {
Intent intent = new Intent(this, ActivityC.class);
in.putExtra("Scores", scores);
startActivity(intent);
}
}

Activity C:

public class ActivityC extends Activity {
@Ghi đè
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_c);
MyClass score = (MyClass) getIntent().getSerializableExtra("Scores");
//score is null here always
}
}

list :


android:name=".ActivityA"
android:noHistory="true">






android:noHistory="true">



如何在 Activity C中成功接收我的自定义类(class)?请帮忙

1 Câu trả lời

问题显然就在这里//无论如何我都必须存储 Activity B 的上下文.

不!您不必存储 Activity B 的上下文。您尝试这样做的原因是错误的。

在 Android 中,您绝不能尝试将 Activity 保留的时间超过其生命周期,并且绝不能尝试序列化 Context。它就是不能像这样工作,这就是它不能工作的原因。

我将其作为答案(而不是评论),因为事实就是如此。

问题的解决方案是:重新思考应用的架构。通过 Activity 传递或共享信息有几种不同的正确方法,但尝试保持上下文并将其序列化不是其中之一。

关于java - 使用 Activity 上下文将自定义对象从 Activity 传输到 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496227/

34 4 0
Bài viết được đề xuất: java - KeyEvent中有多少个java KeyCode?
Bài viết được đề xuất: java - LibGDX,我应该如何在屏幕和舞台内组织代码?
Bài viết được đề xuất: java - 将用户创建的对象存储在 arrayList 中多次迭代
Bài viết được đề xuất: java - 设置难度不起作用
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com