0

ヘッダーを持つ BaseActivity があります。

public class BaseActivity extends Activity
{
        @Override
        public void setContentView(int layoutResID) {
            super.setContentView(layoutResID);      
        {
            Button home_header = (Button)findViewById(R.id.home_header);
            Button questions_header = (Button)findViewById(R.id.questions_header);

            home_header.setOnClickListener(new Button.OnClickListener() 
            {  
                public void onClick(View v) 
                {                   
                  Intent myIntent = new Intent( BaseActivity.this , ProblemioActivity.class);
                  BaseActivity.this.startActivity(myIntent);
                }
            });                 

            questions_header.setOnClickListener(new Button.OnClickListener() 
            {  
                public void onClick(View v) 
                {                   
                  Intent myIntent = new Intent( BaseActivity.this , MyQuestionsActivity.class);
                  BaseActivity.this.startActivity(myIntent);
                }
            });         
        }
    }
}

次のように拡張すると機能します。

public class ProblemActivity extends BaseActivity

しかし、ListActivity を拡張するクラスがある場合、BaseActivity も拡張できません。ListActivity を拡張するクラスにもヘッダーを持たせる方法はありますか? 現在、BaseActivity を拡張してヘッダーを持たせていますが、既に ListActivity を拡張しているものもあるため、そのようにはできないようです。

これを回避し、ListActivity を拡張するクラスもヘッダーを持つことができるようにするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

BaseActivityから拡張することはできますListActivityが、これによりすべてのアクティビティが にListActivityなり、ListActivity ではない他のアクティビティに問題が発生する可能性があります。

ListActivityを使用する必要はありませんListViewListViewプレーンなアクティビティでお使いいただけます。すべてのアクティビティで引き続き BaseActivity を使用する場合は、ListActivity を使用せず、自分で ListView を管理してください。別の代替手段は、ListActivityから拡張する独自のものを作成することBaseActivityです。これの基本的な例を次に示します。

class MyBaseListActivity extends BaseActivity {

  protected ListView getListView() {
    return (ListView)findViewById(android.R.id.list);
  }

  protected ListAdapter getListAdapter() {
    return getListView().getAdapter();
  }

  ...


}
于 2012-05-26T16:44:11.150 に答える