我有一个类,目前正在扩展活动,我有像findViewById,ArrayAdapter等方法 我想把它变成一个独立的类,但所有上述方法变成未定义。问题是什么?不应该导入类是不够的?例如,我为findViewById导入android.view.View,但它仍然没有区别。 请指教。在不扩展的类中使用findviewbyid活动在android
回答
您应该将活动的实例传递给你的第二个类的构造函数是这样的:
在你Activity
实例化的类是这样的:
MyClass instance = new MyClass(this);
而在你的第二级,在构造将是这样的:
public class MyClass {
public Activity activity;
//.... other attributes
public MyClass(Activity _activity){
this.activity = _activity;
//other initializations...
}
}
,然后当你要使用的findViewById()
方法,你可以这样做:
EditText txt = (EditText)this.activity.findViewById(R.id.txt);
findViewById是Activity
类的非静态公共方法,所以它只可用于一个Activity
对象。因此,进口android.view.View
和android.app.Activity
不会使它可用。为了使其可用,您可以传递Actvity
对象 - 通常是您的活动中的一个this
点。但是,请注意,您应始终在UI线程中更新视图。
好吧,我明白为什么这不是选择,但是不findViewById View类的方法?你也可以解释为什么我们应该总是在UI线程中更新视图(你是指主要的Activity?)? – Namratha
如果你想调用属于Activity
那么只有你需要有东西的任何功能是Activity
的上下文。
例如。
class A extends Activity{
Context ctx;
void oncreate(Bundle b)
ctx = this;
B bob = new B(ctx);
}
}
这里是B类
Class B
{
B(Activity a)
{
a.anyFunctionOfActivity();
}
}
在这里,这不会在AsyncTask –
@IgorGanapolsky中工作。在AsyncTask中完成这项工作应该做些什么? –
请尝试以下方法:
public static View getLayoutByRes(@LayoutRes int layoutRes,@Nullable ViewGroup viewGroup)
{
final LayoutInflater factory = getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return factory.inflate(layoutRes, viewGroup);
}
TextView tv = (TextView) getLayoutByRes(R.layout.xxx ,Null).findViewById(R.id.editd);
- 1. 在非活动类中使用findViewById
- 2. findViewById在非活动类
- 3. Android findViewById在主类以外的类中使用时返回null活动
- 4. android的活动扩展
- 5. 扩展活动的类
- 6. Android:如何让findViewById(R.id.xxx)在继承/扩展View类的类中工作?
- 7. 从扩展CountDownTimer类中调用活动
- 8. android:自己的类扩展活动和/或列表活动
- 9. Android:使用类“FindViewById”?
- 10. 使用roboguice而不扩展活动
- 11. 如何在活动中使用非静态方法在MainActivity中扩展应用程序扩展活动
- 12. 何时在活动中调用findViewById
- 13. 从库中扩展Android活动
- 14. findViewById(R.id.something)在非活动
- 15. 如何使用MOTODEV从Android中的MapActivity扩展活动?
- 16. 在Android中扩展应用程序类
- 17. 在Android中扩展类应用程序?
- 18. Android Java - 为什么不扩展活动 - >新活动
- 19. 扩展Android活动的设计模式?
- 20. android在主要活动中获得扩展视图的维数
- 21. android在扩展的intentservice活动中通过intent获取变量
- 22. android活动类不存在?
- 23. 非扩展类在android
- 24. 在不属于活动的类中使用Android中的TelephonyManager
- 25. 如何从扩展覆盖类的类中调用活动
- 26. 在没有扩展活动的类中运行一个方法android
- 27. 如何在已经扩展另一个类的活动中使用片段?
- 28. 扩展库活动不会调用onCreate
- 29. 防止Android对话框扩展活动
- 30. Android:扩展自定义抽象活动
这不起作用。 findViewById只能在Activity上调用,而不能在Context上调用。我尝试了你的方法,但它仍然给我错误。 – Namratha
所以看到我的编辑,只是传递活动intstead实例的上下文:) – Houcine
好吧,我做到了:)当我在Activity对象上调用findViewById时,我试图找到的Listiew是NULL。那是因为我之前没有使用setContentView作为包含ListView的XML文件吗? – Namratha