当移动到库文件中时,findViewById返回null

时间:2010-09-17 08:47:39

标签: android layout

我是Java和Android的新手。我有一段用于多个活动的代码,因此我将其移动到自己的库.java文件中。但是,现在我的findViewById返回null,当他们使用onCreate()和setContentView()调用它们是主Activity文件的一部分时,它们返回正确的东西。如何让它在我的图书馆内工作?

从Activity类调用:

helper.popupControl(getListView(),getBaseContext(),“on”);

libruary中的代码:

public class Helper extends ListActivity {
public void popupControl (View v, Context context, String on_off) {
    Animation aFilm = AnimationUtils.loadAnimation(context, R.anim.fade_in);  
    aFilm.reset();

    View vFilm = (View) v.findViewById(R.id.gray_out_film);

    if(vFilm==null) { 
        Toast maxToast = Toast.makeText(context, "View is null! "+R.id.gray_out_film+", View:"+v.toString(), Toast.LENGTH_LONG);
        maxToast.setGravity(Gravity.CENTER, 0, 0);
        maxToast.show(); 
    } else {
        Toast maxToast = Toast.makeText(context, "View is not null!", Toast.LENGTH_SHORT);
        maxToast.setGravity(Gravity.CENTER, 0, 0);
        maxToast.show();
    }
}
}

3 个答案:

答案 0 :(得分:1)

在致电Activity.setContentView(int resID)

之前致电findViewbyId()

答案 1 :(得分:0)

你想做的事情似乎'icky'但是这是如何做的。

您需要从活动中传递View ... findViewbyId()是其成员函数。

如果您提供一些示例代码,我可能会更有帮助。

修改:与Context混淆View。糟糕!

答案 2 :(得分:0)

这发生在我身上,解决方法是从新项目中删除main.xml。不知怎的,它干扰了库项目中的main.xml,即使我指的是完全限定名称(例如:library.package.R.layout.main)。