【发布时间】:2016-06-17 23:05:15
【问题描述】:
我有一个启动屏幕活动(ACTIVITY A),它在加载完成时打开ACTIVITY B
活动 B ** 包含一个打开 **活动 C 的按钮
ACTIVITY A使用异步任务加载列表
我希望这个加载的列表在打开时显示在ACTIVITY C中
我已经阅读了很多关于如何将值从第一个活动传递到第三个活动的帖子,并尝试实现所有这些但没有任何帮助
甚至尝试通过 ACTIVITY A > ACTÌVITY B > ACTIVITY C 的意图传递列表对象,但没有成功
最后,我使用“jacksons library”将加载的列表转换为jsonstring,然后将其放入ACTIVITY A中的sharedpreferences中,然后从sharedpreferences中检索jsonstring,将其转换回**中的列表对象活动 C** 并显示列表
但是列表没有显示出来
怎么办,有没有更好的流程
飞溅活动(活动 A)
public class SplashActivity extends Activity{
List<ParseObject> ob;
List<CodeList> codelist = null;
ObjectMapper mapper;
SearchPreferences searchpref;
@Override
public void onCreate(Bundle savedInstanceState){
// TODO: Implement this method
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
mapper = new ObjectMapper();
searchpref = new SearchPreferences();
new DataTask().execute();
}
public class DataTask extends AsyncTask<Void, Void, List<CodeList>>{
@Override
protected List<CodeList> doInBackground(Void[] p1){
codelist = new ArrayList<CodeList>();
try {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("InterActivity");
query.orderByAscending("_created_at");
ob = query.find();
for (ParseObject inter : ob) {
CodeList map = new CodeList();
map.setIntroduction((String) inter.get("intro"));
codelist.add(map);
}
return codelist;
}
catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<CodeList> result){
try{
String jsonsearchlist = mapper.writeValueAsString(result);
Intent i = new Intent(SplashActivity.this, MainActivity.class);
searchpref.save(SplashActivity.this, jsonsearchlist);
startActivity(i);
}
catch (JsonProcessingException e){}
}
}
}
活动 C
public class SearchActivity extends Activity{
protected EditText searchedittext;
ImageButton searchButton;
List<ParseObject> ob;
List<CodeList> splashcodes;
FinalAdapter fnladapter;
SearchPreferences searchpref;
ObjectMapper mapper;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.search_layout);
searchpref = new SearchPreferences();
mapper = new ObjectMapper();
String jsonsearchobj = searchpref.getValue(SearchActivity.this);
try{
splashcodes = (List<CodeList>) mapper.readValue(jsonsearchobj, CodeList.class);
final ListView searchedlist = (ListView) findViewById(R.id.searchlist);
fnladapter = new FinalAdapter(SearchActivity.this, splashcodes);
searchedlist.setAdapter(fnladapter);
}
catch (IOException e){}
}
}
【问题讨论】:
-
你想要什么?我不明白。
-
@ArpitPatel 我希望 Activity A 中的加载列表显示在 Activity C 中
-
@ArpitPatel 和 Activity A 直接打开 Activity B 而不是 Activity C
-
使用 Parcelable 接口。 developer.android.com/reference/android/os/Parcelable.html
-
> “甚至尝试通过来自 ACTIVITY A > ACTÌVITY B > ACTIVITY C 的意图传递列表对象,但没有成功。”这是正确的方法。你遇到了什么问题?
标签: android listview object android-sharedpreferences