我有一个应用程序基本上看起来像附图中的设计。 如您所见,有4个活动,其中一些活动有碎片。
我希望将测试的答案反馈给用户的个人资料。 到目前为止,我一直在将结果上传到服务器,让应用每次返回 ProfileActivity 时都会更新用户的个人资料,但这似乎是浪费资源。
在应用中是否有模式或方法可以执行此操作?
我看了this:如果我能以某种方式链接两个startActivityForResult()
,这似乎是可行的。
我研究了使用this question中描述的委托模式,但我无法将 UserFragment 的实例添加到 TestActivity 。
我希望有人可以指出我正确的方法。
答案 0 :(得分:1)
一种方法是使用startActivityForResult()
不完成任何Activity
按startActivityForResult()
开始所有活动,然后根据您的情况完成活动
使用onActivityResult()
然后,对于片段,您可以将片段对象存储在 ProfileActivity 中。 在Fragment中用于更新UI的方法
因此,您可以使用片段对象
访问该方法class ProfileActivity extends ......
{
@override
public void onActivityResult(....)
{
.....
frgamnetObject.updateUI();
....
}
}
答案 1 :(得分:1)
假设您从最后一页获得一个int值:
创建课程:
public class GenericUtility {
public static int getIntFromSharedPrefsForKey(String key, Context context)
{
int selectedValue = 0;
SharedPreferences prefs = context.getSharedPreferences("com.your.packagename", Context.MODE_PRIVATE);
selectedValue = prefs.getInt(key, 0);
return selectedValue;
}
public static boolean setIntToSharedPrefsForKey(String key, int value, Context context)
{
boolean savedSuccessfully = false;
SharedPreferences prefs = context.getSharedPreferences("com.your.packagename", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
try
{
editor.putInt(key, value);
editor.apply();
savedSuccessfully = true;
}
catch (Exception e)
{
savedSuccessfully = false;
}
return savedSuccessfully;
}
public static String getStringFromSharedPrefsForKey(String key, Context context)
{
String selectedValue = "";
SharedPreferences prefs = context.getSharedPreferences("com.your.packagename", Context.MODE_PRIVATE);
selectedValue = prefs.getString(key, "");
return selectedValue;
}
public static boolean setStringToSharedPrefsForKey(String key, String value, Context context)
{
boolean savedSuccessfully = false;
SharedPreferences prefs = context.getSharedPreferences("com.your.packagename", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
try
{
editor.putString(key, value);
editor.apply();
savedSuccessfully = true;
}
catch (Exception e)
{
savedSuccessfully = false;
}
return savedSuccessfully;
}
}
而不是设置int值:
GenericUtility.setIntToSharedPrefsForKey("selected_theme", 1, getApplicationContext());
或
GenericUtility.setIntToSharedPrefsForKey("selected_theme", 1, MyActivity.this))
并且在您想要结果的第一个活动中:
int selectedValue = GenericUtility.getIntFromSharedPrefsForKey("selected_theme", getApplicationContext());
或
int selectedValue = GenericUtility.getIntFromSharedPrefsForKey("selected_theme", MyActivity.this);
如果没有值,selectedValue将返回默认值。 PS将int更改为类中的String以相应地获取和设置结果。