2

アプリケーションにタイトル バーがあります。また、タイトル バーには 1 つのボタンがあります。そのボタンをクリックすると、情報アクティビティが表示されます。今、私が知る限りandroid:onClick、xml が に設定されているアクティビティ内のパブリック メソッドの参照が必要setContentView()です。ここで、そのボタン クリックのロジックはアプリケーション全体で同じであるため、メソッドで 1 回だけ言っshowInfoScreen(View view)て、そのボタンonClick属性に配置します。そして、どこにでも同じメソッドを書く必要はありません。出来ますか?

4

3 に答える 3

5

もちろん可能です。クラスを作成してActivityから、すべてのActivitys にそれを拡張させます。例えば:

public abstract class BaseActivity extends Activity {

    @Override
    public void setContentView( int layoutResID ) {

        super.setContentView( layoutResID );
        findViewById(R.id.button).setOnClickListener(new OnTitleBarButtonClickListener());
    }

    private void showInfoScreen() {

        // Show the info screen
    }

    private class OnTitleBarButtonClickListener implements OnClickListener {

        @Override
        public void onClick(View v) {

            showInfoScreen();
        }
    }
}

次に、すべての派生s が の代わりにActivity拡張されます。BaseActivityActivity

このようにすることのActivity利点は、このクラスを拡張するすべてのものが自動的にこの機能を取得することです。派生クラスでのコーディングは必要ありませんBaseActivity。. Activityすべてのs が持つ唯一の契約は、R.id.buttonそのコンテンツ内で名前を付けた id を持つことです。

于 2012-04-09T07:01:15.220 に答える
1

onclickインフォスクリーンを表示したいすべてのアクティビティに書き込む必要があると思います。

ただし、すべてのアクティビティでOnClick A メソッドを呼び出すだけです....showInfoScreen(View view)

そして、クラス Like を作成する必要がShowInfoあります...そして1つの静的メソッドがあります...

public class ShowInfo{

 public static void showInfoScreen(View view,Context c){
  //now dispay info here 
}
}

ShowInfo.showInfoScreen(v,YourClassName.this)あなたのメソッドに書いてくださいonClick()....

于 2012-04-09T06:56:34.907 に答える
0

Vinayak.B提案されたものの例は次のとおりです。

    public class yourAppUtils {

    public static void yourMethod() {
        // Do stuff
    }

}
于 2012-04-09T06:55:46.807 に答える