开发了许多桌面 GUI 应用程序(从 Xt 到 Qt、Java Awt/Swt/Swing 等),我真的发现很难习惯 Android。
假设我有 MainView Activity 类,它通过 Intent 机制显式调用DetailedView,如下所示:
由于 Activity 类是通过 onCreate() 实例化的,我该如何 定制吗? (没有构造函数,只有 通过 Intent 传递数据!)
有没有办法获取DetailedView实例的引用 主要 Activity ?
有没有办法获取 MainActivity 实例的引用 详细查看?
如何将对 FrontEnd 的引用传递给DetailedView 类? Intent.putExtras() 只允许 某些数据类型传递给 Intent 接收器类。
MainActivity { ... FrontEnd fe; ... public void onCreate(Bundle savedInstanceState) { ... Intent myIntent = new Intent(this, DetailedView.class); ... } protected void onListItemClick(ListView l, View v, int position, long id) { ... startActivityForResult(myIntent,..); ... } }
最佳答案
在特定应用程序的 Activity/服务之间传递简单数据的一种方法是使用 android 的 SharedPreferences 功能。
这可能不是完成工作的最优雅的代码,但我通常在 Android 项目中创建一个静态“实用程序”类,以允许通过共享首选项进行 1 行获取和设置简单数据类型
private static final String PREFERENCE_FILE_NAME = "com.snctln.util.test.SharedPreferencesFile";
private static final String BOOL_VALUE_ONE = "bValueOne";
public static boolean getBooleanValue1(Context context)
{
SharedPreferences prefs = context.getSharedPreferences(PREFERENCE_FILE_NAME, Context.MODE_PRIVATE);
return prefs.getBoolean(BOOL_VALUE_ONE, true); // return true if the value does not exist
}
public static void setBooleanValue1(Context context, int appWidgetId, boolean actualvalue)
{
SharedPreferences.Editor prefs = context.getSharedPreferences(PREFERENCE_FILE_NAME, Context.MODE_PRIVATE).edit();
prefs.putBoolean(BOOL_VALUE_ONE, actualvalue);
prefs.commit();
}
关于android - 通过 Intent 而不是构造函数传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987848/