Android的Java问题如何实现这样的需求

1,为了代码比较优雅,所以我写了一个BaseActivity如下:
public abstract class BaseActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
}

/**
 * 初始化视图控件
 */
public abstract void initView();

/**
 * 设置数据
 */
public abstract void setDate();

}

2.我发现我们在实现这个抽象类时,要在 onCreate(Bundle savedInstanceState){
}中写initView();而且都是重复的,有没有办法不写initView,也可以初始化initView里的设置,让继承BaseActivity不用在onCreate()中initView()

9个回答

BaseActivity中覆盖setContentView()方法,再里面调用initView()
@Override
public void setContentView(int layoutResID)
{
// TODO Auto-generated method stub
super.setContentView(layoutResID);
initViews();
}

抽象类这么写

 public abstract class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
        initView();//这里加上,子类就不用写了
}

/**
 * 初始化视图控件
 */
public abstract void initView();

/**
 * 设置数据
 */
public abstract void setDate();
}
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        initView();
    }

    public abstract void initView();

    public abstract void setData();
u010514380
super小靖 好吧,跟楼上的重了
4 年多之前 回复

把initview方法写进抽象类的oncreate里面

楼上给的意见是正解,我就是这么做的,再BaseActivity的onCreate方法中调用写的抽象类,在继承了BaseActivity之后,就不用再重新调用
该方法,只需重写其内容就可以了。

说实话,我觉得基类还是控制有哪些方法,和把基本,是基本调用做了,这些逻辑还是放在子类好,因为时间一长或者别人来看,就容易把你的基类忽略,导致不清楚整个逻辑。这种方法我个人意见少用,我就遇到过一些要在initview前做的操作。

u012131702
欧拉啊旺 可以在onCreateView();操作, 关键是这样可以在子类中分段,而且不理会顺序
4 年多之前 回复

initView()写在oncreate里面是不行的,因为initView的操作必须要写在setcontentView之后,不然后果很严重

先要加载view,才能初始化控件。
重写覆盖super.setContentView( );将initView( )集成到子activity的setContentView( )方法中。

弱弱的说一句 setDate 是设置日期。。。。。。。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!