开发了许多桌面GUI应用程序(从Xt到Qt,Java Awt / Swt / Swing等)我真的觉得很难习惯Android。
假设我有MainView Activity类,它通过intent机制显式调用DetailedView,如下所示:
由于Activity类是通过onCreate()实例化的,我该怎么做 定制吗? (没有构造函数,只有 通过意图传递数据!)
有没有办法获取DetailView实例的引用 MainActivity?
有没有办法获取MainActivity实例的引用 DetailedView?
如何将对FrontEnd的引用传递给DetailedView类? Intent.putExtras()仅允许 某些数据类型传递给 意图接收者类。
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,..);
...
}
}
答案 0 :(得分:2)
在特定应用的活动/服务之间传递简单数据的一种方法是使用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();
}
答案 1 :(得分:1)
我经常作弊并使用静态'getInstance'调用来在Activities和views之间进行通信。只要他们都处于相同的过程中,这种方法就有效,而且我还没有数据访问失败...但我确信这只是时间问题...如果你正在寻找一个hacky快速修复这可能是它,否则你必须通过意图传递数据。