andriod的简单用法2

时间:2023-01-31 07:27:53

1、在Activity中使用menu

//创建菜单项  
public
boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } //点击其中一个菜单中时触发该事件 @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }

2、销毁活动,即从堆栈中去掉该Activity,并不一定是退出应用。

    finish();  

3、活动被回收了怎么办

  当Activity处于停止状态即:onstop状态时有可能被系统回收。当用户back到该Activity的时候不执行onRestart,而是执行onCreate方法。 而该Activity有可能有一些中间状态或者数据就会丢失了。解决办法:

复写:onSaveInstanceState(Bundle outState)回调方法。该方法会在Activity被回收之前调用。

将需要保存的数据放到Bundle中。

当这个页面再次被打开时执行onCreate方法,其中的参数Bundle中就会有值(其他情况下一般是null)。如果不是null,就可以把Bundle中保存到额数据恢复回来。

4、去掉标题栏

 使用:requestWindowFeature(Window.FEATURE_NO_TITLE);

见很多书上和网上问答,这个方法调用的时机是:

protected void onCreate(Bundle savedInstanceBundle) {
        super.onCreate(savedInstanceBundle);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //requestWindowFeature要位于setContentView之前,否则会报:requestFeature() must be called before adding content 异常
        setContentView(layout.login);
}

但是我按照这样的写法写了之后还是报这个异常,查询了好久,可能跟继承的父类相关吧,上边的写法应该是继承父类Acivity,而我这要兼容低办法,继承ActionBarActivity类。

改成如下写法运行成功。将requestWindowFeature方法放到super.OnCreate之前运行成功

protected void onCreate(Bundle savedInstanceBundle) {
        
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceBundle);
        setContentView(layout.login);    
}

 //该问题没有解决,虽然上述办法不报错,但是标题栏还在显示 再查资料吧 http://*.com/questions/16939814/android-util-androidruntimeexception-requestfeature-must-be-called-before-add