我对Android很新,我需要你的帮助。
我很好奇我做的是不是正确的事。
我的应用程序只有一个Activity(MainActivity它是AppCompatActivity btw)。
但是我使用了几个片段。
一些片段包含一个必须具有Activity的Object(我称之为ProblemClass)(不过是Context)。
诸如ListView的适配器(或类似的东西)来扩充布局
或Dialog必须膨胀布局并需要Context来创建AlertDialog.Builder。
它(ProblemClass)无法调用getActivity()。
在我看来,我有两个解决方案。
1.Pass Activity to ProblemClass。
2.在Singleton中控制活动,以便在任何Class整个应用程序中使用。
我选择后者。但...
我在某处读过可能会导致内存泄露,对吗?
由于Singleton-Object存在整个应用程序生命周期。
这是我举行活动的单身人士。
我在MainActivity中的onCreate()中调用setMyActivity(MainActivity.this)将其传递给Singleton。
public class MyActivitySingleton
{
private AppCompatActivity mAppCompatActivity;
private MyActivitySingleton()
{
}
private static class MyActivitySingletonHolder
{
private static final MyActivitySingleton INSTANCE = new MyActivitySingleton();
}
public static MyActivitySingleton getInstance()
{
return MyActivitySingletonHolder.INSTANCE;
}
public AppCompatActivity getMyActivity()
{
return this.mAppCompatActivity;
}
public void setMyActivity(AppCompatActivity appCompatActivity)
{
this.mAppCompatActivity = appCompatActivity;
}
}
有什么建议吗?我该怎么办?
将Activity传递给ProblemClass,如果需要Context。它也可以使用Activity作为上下文吗?
感谢。
答案 0 :(得分:0)
对于片段上的适配器,您可以:
ArrayAdapter<String> adapter = ArrayAdapter<String>(getActivity(), stringList);
listView.setAdapter(adapter);