【发布时间】:2015-07-18 22:35:22
【问题描述】:
问题有点复杂,首先活动 A 和活动 B 活动 B 在清单中都有 android:noHistory = true。我有一个自定义 serializable 类假设 MyClass ,该自定义类实际上是通过构造函数存储 Activity B 的上下文。我在 MyClass 类型的 Activity B 中有一个对象名称 obj ,现在我想在 时通过意图将此对象转移到 Activity C >返回按钮在Activity B中被按下。
从活动 A 有一个按钮可以毫无问题地打开活动 B,当我尝试在 onBackPressed() 中通过 B 打开活动 C 并传输可序列化对象时,问题就开始了。我在活动 C 中收到 NULL。
[更新]我的班级:
@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;
}
}
活动 B:
public class ActivityB extends Activity {
MyClass scores;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
scores = new MyClass(this);
}
@Override
public void onBackPressed() {
Intent intent = new Intent(this, ActivityC.class);
in.putExtra("Scores", scores);
startActivity(intent);
}
}
活动 C:
public class ActivityC extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_c);
MyClass score = (MyClass) getIntent().getSerializableExtra("Scores");
//score is null here always
}
}
清单:
<activity
android:name=".ActivityA"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ActivityB"
android:noHistory="true">
</activity>
<activity android:name=".ActivityC">
如何在活动 C 中成功接收我的自定义课程?请帮忙
【问题讨论】:
-
我不确定这是否能解决问题,但根据 putExtra() 上的文档,额外名称必须包含包名称作为前缀。
-
@MichaelAaronSafyan 不,这不是必需的。
标签: java android android-intent android-activity serialization