活动的应用,一般就是创建一个layout的xml文件,然后再创建一个活动程序的.java的活动类,最后在mainifests里去注册这个活动。
前面那些东西莫名的启动了活动,但活动好像都有意图(Intent)有关,我突然发现前面好像没出再过Intent这玩意。
用这个把页面与活动联系起来:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);活动是继承的
public class MainActivity extends AppCompatActivity{}最后是活动的注册,好在这里发现了intent这个东西,哈哈哈。
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
如果我注册一个新的活动大概也就是这个样加一条
<activity android:name=".NewActivity"> </activity>
基本这是这样
再说下intent:分为显式和隐式两种,它有多个构造的重载其中一个就是Intent(Context packageContext, Class<?>cls).
所以如果、要在一个活动是启动另一个活动可以拿这样使用,实现活动间的切换,也就是手机页面问的转换,这就是显示的搞法。
Button button = (Button)findViewById(R.id.button_test); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActvity.class); startActivity(intent); } });
还有一种隐式的搞法就是在去配<intent-filer>的内容从而让系统分析出那个活动该启动
这种搞法是Intent的另一种构造方式,这样写一个不好就崩了,它需要配置好<category>这个属性如果发现崩了就看log是不是提示没有可响应的活动,就可能是活动中的与注册的对应不上。
活动中是这样:
Button button = (Button)findViewById(R.id.button_test); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent("com.ouyang.myapplication.ACTION_START"); intent.addCategory("com.ouyang.myapplication.MY_CATEGORY"); startActivity(intent); } });
注册就要这样子:
<intent-filter> <action android:name="com.ouyang.myapplication.ACTION_START" /> <category android:name="com.ouyang.myapplication.category.DEFAULT" /> <category android:name="com.ouyang.myapplication.MY_CATEGORY" /> </intent-filter>这样一一对应我想应该不会出错了吧