0

ライブラリ プロジェクトに PreferenceActivity のサブクラスである SettingsActivity があります。

oncreate メソッドは次のようになります

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

preference.xml ファイルは、要素 PreferenceScreen -> PreferenceCategory -> Preference のような構造になっています。

<?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

idまず、 LinearLayout にusingを与える必要があります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)ビューを取得するとき、あなたはそれをではなく見つけるでしょうR.layout.(whatever)

于 2012-07-06T03:06:05.867 に答える