Activity初步
AndroidManifest.xml
#只有主Activity需要配置<intent-filter>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
MainActivity.java
#类名和<activity>标签的android:name相同
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
#找到layout下的activity_main.xml文件
setContentView(R.layout.activity_main);
}
}
资源
res/values/strings.xml -> 字符串
<resources>
<string name="app_name">CheckMe</string>
</resoutces>
1. 在代码中通过R.string.app_name使用
2. 在XML中通过@string/app_name使用
小东西
#隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
#监听事件
btn.setOnclickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "You clicked Button", Toast.LENGTH_SHORT).show();
}
}
###点击返回按钮
@Override
public void onBackPressed() {}
#活动周期
完整活动周期 onCreate() - onDestroy()
可见生命周期 onStart() - onStop()
前台生存期 onResume() - onPause()
菜单
#mian.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="Add" />
</menu>
#MainActivity.java
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true
}
#监听菜单的点击
public boolean onOptionsItemSelected(MenuItem item) {
switch( item.getItemId() ) {#获取点击的菜单的id
case R.id.add_item:
}
return true;
}
销毁活动
finish();
Activity跳转
#显式Activity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
#隐式Activity,设置xml的<activity>标签的<intent-filter>
<activity android:name=".SecondActivity" >
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<catrgory android:name="android.intent.category.DEFAULT" />
</activity>
#.java中代码
Intent intent = new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);
#如果没有设置category默认的category为DEFAULT
intent.addCategory("android.intent.category.DEFAULT")
#隐式intent的其他用法
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
#intent-filter
<data android:scheme="http">
向下一个活动传递参数
String data = "Hello world";
intent.putExtra("extra_data", data);
获取传递的参数
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
向上一个活动传递数据
# 这个上一个活动的代码
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
#1为请求码,为唯一值
startActivityForResult(intent, 1);
#构建了一个新的Intent,只是为了传值
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
#在这个activity被销毁后会调用上一个activity的onActivityResult方法
finsh();
#上一个活动的onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case 1:
if(resutlCode == RESULT_OK) {
String returnedData = data.getStringExtra("data_return");
}
break;
default:
}
}