只需编写一次方法,然后在应用程序中的“android:onClick”中访问它

时间:2012-04-09 06:49:12

标签: android onclick android-xml

我的应用程序中有一个标题栏。标题栏有一个按钮。点击该按钮,我显示信息活动。现在,据我所知,android:onClick需要在活动中引用一个公共方法,该方法在setContentView()中设置了xml。现在,由于单击按钮的逻辑在整个应用程序中都是相同的,所以我想要的是,我只会说出showInfoScreen(View view)方法并将其放在按钮onClick属性中。我不需要在任何地方写相同的方法。有可能吗?

3 个答案:

答案 0 :(得分:5)

当然有可能。写一个Activity类,然后让所有Activity扩展它。例如:

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();
        }
    }
}

然后,所有派生的Activity都会延伸BaseActivity而不是Activity

这样做的好处在于,任何扩展此类的Activity都会自动获得此功能。在BaseActivity中,派生类中不需要编码。您的所有Activity所拥有的唯一合同将是R.id.button或您在其内容中为其命名的任何ID。

答案 1 :(得分:1)

我认为您必须在要显示infoscreen的每个Activity中编写onclick

OnClick你只需在每个活动中调用方法showInfoScreen(View view) ....

你应该创建类Like ... ShowInfo,并且有一个静态方法......

public class ShowInfo{

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

ShowInfo.showInfoScreen(v,YourClassName.this)方法....

中写下onClick()

答案 2 :(得分:0)

Vinayak.B建议的示例如下:

    public class yourAppUtils {

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

}