Activity
作为和用户之间交互的UI组件,Activity组件无疑在Android的UI组件中占据着重要位置。在通常状态下,Activity作为一个全屏的窗口出现,也可以作为其他的应用的子Activity出现。
activity间的切换
在activity和activity之间借助intent组件进行,下面是一个最简单的调用。
//设置调用的activity
Intent in=new Intent(context, BluetoothOppBtErrorActivity.class);
//设置标志位
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//设置标题
in.putExtra("title",context.getString(R.string.unknown));
//设置显示内容
in.putExtra("content",context.getString(R.string.unknown_file_desc));
//启动Activity,不需要返回数据
context.startActivity(in);
在被调用的Activity中,处理数据的方法如下
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String mErrorTitle = intent.getStringExtra("title");
mErrorTitle = intent.getStringTitle("content");
......
}
在泛化Activity类时,必须实现Activity::onCreate()和Activity::onPalse()两个方法。另外通过一个Activity调用另一个Activity时,如果不需要返回数据,则通过Context.startActivityForResult()方法来处理,常见的方法如下
Intent intent =new Intent();
intent.SetClass(this,CreatePlaylist.class);
startActivityForResult(intent,NEW_PLAYLIST);
在被调Activity中,处理完请求后,可以通过如下方法向调用的Activity返回数据
setResult(RESULT_OK,(new Intent()).setData(uri));
对于返回的数据,调用Activit将在其onActivityResult方法中处理,过程如下
public void onActivityResult(int requestCode,int resultCode,Intent intent){
switch(reuestCode){
case NEW_PLAYLIST:
URI uri = intent.getData();
}
}
}
标题栏的定制
为了隐藏标题栏,可以在Java代码中实现,也可以在AndroidMenifest.xml文件中实现。
两者的不同之处在于:
用java实现,会在程序开始的时候出现标题栏,而后隐藏。而在Manifest中修改则会把标题栏当作属性来隐藏。并且一直都隐藏标题栏。
java实现方法
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindwoFeature(Window.FEATURE_NO_TITLE);
//必须放在requestWindowFeature()后边
setContentView(R.layout.main);
}
AndroidManifest.xml实现方法
<activity android:name=".graphics.FrameBufferObjectActivity"
android:label="Graphics/OpenGL ES/Frame Buffer Object"
android:theme="@android:style/Theme.NoTitleBar"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.SIMPLE_CODE"/>
</intent-filter>
</activity>
自定义标题栏的方法
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title);
......
}
希望同时隐藏标题栏和状态栏的方法
<activity android:name=".graphics.FrameBufferObjectActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>