0

我的库项目中有一个 SettingsActivity,它是 PreferenceActivity 的子类

oncreate 方法如下所示

addPreferencesFromResource(R.xml.preferences);
setContentView(R.layout.main);

preference.xml 文件的结构类似于元素 PreferenceScreen -> PreferenceCategory -> Preference 我的主要 main.xml 看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical">


  <!--Listview will be replaced by preferences  -->

  <ListView android:id="@android:id/list"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent" />

</LinearLayout>

上面的类 SettingsActivity 是在另一个项目中的子类,看起来像这样

public class SettingsActivityFree extends SettingsActivity 
{
       private AdView adView;

       @Override
   protected void onCreate(Bundle savedInstanceState) 
       {        
    super.onCreate(savedInstanceState);

            //...

            // layout returned will be null ..
            LinearLayout layout = (LinearLayout)findViewById(R.layout.main);

            // Add the adView to it
            layout.addView(adView);
       }

问题是我试图从父类中获取 LinearLayout 以便我可以在其中添加我的东西,但由于某种原因它返回 null ,我在 SettingsActivity 类中有 LinearLyout 的原因是因为我想在其中放置一些广告等首选项的顶部,并且没有将特定于广告的代码放入库项目中

请告知如果我在这里遗漏了什么,

谢谢

4

2 回答 2

2

首先你需要给你的 LinearLayout 一个idusing android:id="@+id/whatever"。然后您可以使用findViewById(R.id.whatever).

于 2012-07-06T03:09:38.437 回答
0

你真的应该检查开发者网站。你没有正确地做到这一点。查看有关 ListView 和 ListActivity 的文档。在使用它之前了解它是如何工作的。

也作为提示:

你不这样做(LinearLayout)findViewById(R.layout.main);

检索视图时,您会在R.id.(whatever)not in 中找到它R.layout.(whatever)

于 2012-07-06T03:06:05.867 回答