我有一個類,目前正在擴展活動,我有像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. Android:使用intent而不擴展活動
- 3. findViewById在非活動類
- 4. findViewById在擴展的LinearLayout
- 5. Android新活動擴展ActionBar類而不是活動類
- 6. Android findViewById在主類以外的類中使用時返回null活動
- 7. 如何在活動中使用擴展的webview類
- 8. 如何在沒有擴展的類中使用getBaseContext()活動
- 9. android的活動擴展
- 10. 擴展活動的類
- 11. 更新活動類從完全不同的類,在Android中擴展AsyncTask
- 12. Android的活動findviewbyid()爲null
- 13. 從不擴展類的startService活動
- 14. Android:如何讓findViewById(R.id.xxx)在繼承/擴展View類的類中工作?
- 15. 在非活動擴展類(Android)中獲取屏幕尺寸
- 16. 從擴展CountDownTimer類中調用活動
- 17. 如何在此Android活動中使用findViewById()?
- 18. android:自己的類擴展活動和/或列表活動
- 19. Android:使用類「FindViewById」?
- 20. 更改擴展活動類
- 21. 使用roboguice而不擴展活動
- 22. 如何在活動中使用非靜態方法在MainActivity中擴展應用程序擴展活動
- 23. 如何在從GLScreen類擴展的類中使用活動類方法?
- 24. 在AS3原生擴展的Android活動中調用函數
- 25. 何時在活動中調用findViewById
- 26. 在已經擴展ActionBarActivity的主活動中擴展一個額外的類?
- 27. Android無法啓動從其他活動擴展活動的Android類
- 28. 從庫中擴展Android活動
- 29. 如果我不在Android/Java中擴展活動類,如何獲得packagemanager對象?
- 30. findViewById(R.id.something)在非活動
這不起作用。 findViewById只能在Activity上調用,而不能在Context上調用。我嘗試了你的方法,但它仍然給我錯誤。 – Namratha
所以看到我的編輯,只是傳遞活動intstead實例的上下文:) – Houcine
好吧,我做到了:)當我在Activity對象上調用findViewById時,我試圖找到的Listiew是NULL。那是因爲我之前沒有使用setContentView作爲包含ListView的XML文件嗎? – Namratha