安卓自学笔记

第二章

活动建立

活动注册

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.xuesi.demo1">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".FirstActivity">//活动注册
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />//声明为主活动

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

线性布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</LinearLayout>

加载布局

public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);//加载布局
    }
}

Toast函数

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        Button button1 = (Button)findViewById(R.id.nextAct);  //新建一个button对象
        button1.setOnClickListener(new View.OnClickListener(){  //注册监听器
            @Override
            public void onClick(View v){
                Toast.makeText(FirstActivity.this,"已点击下个活动按钮",
                        Toast.LENGTH_SHORT).show();
            }
        });
    }

右上角menu菜单
首先在menu文件夹下建立文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/add_item"
        android:title="添加新条目"/>
    <item
        android:id="@+id/remove_item"
        android:title="移除"/>
</menu>

其次在要显示的activity中重写onCreateOptionsMenu()函数

    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
        //参数一指定从哪个资源文件创建菜单 参数二指定将菜单项添加到哪个menu对象中
        return true;//true 显示菜单 false 不显示菜单
    }

让菜单响应事件,在activity中重写onOptionsItemSelected()函数

    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.add_item:
                Toast.makeText(FirstActivity.this,"按下了添加",
                        Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(FirstActivity.this,"按下了移除",
                        Toast.LENGTH_SHORT).show();
                break;
            default:
        }
        return true;
    }

使用finish()函数销毁活动

 button1.setOnClickListener(new View.OnClickListener(){  //注册监听器
            @Override
            public void onClick(View v){
                finish();
            }
        });

使用Intent在活动之间切换以及传递数据

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        Button button1 = (Button)findViewById(R.id.nextAct);
        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(FirstActivity.this,"已点击下个活动按钮",
                        Toast.LENGTH_SHORT).show();
                //新建一个intent,参数一为context(即上下文),参数二为要转向的活动
                //并调用startActivity()函数执行 
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });
    }

活动的数据传递

这里写代码片

活动的声明周期

活动状态

  1. 运行状态
    位于返回栈的栈顶的活动,就处于运行状态
  2. 暂停状态
    不处于栈顶但是可见的活动,比如被对话框挡住的活动
  3. 停止状态
    不处于栈顶,且完全不可见的活动
  4. 销毁状态
    从返回栈中被移除的活动

活动的生存周期

Activity类中定义了7种覆盖声明周期每个环节的回调方法:

  1. onCreate()
  2. onStart()
  3. onResume()
  4. onPause()
  5. onStop()
  6. onDestory()
  7. onRestart()

可将以上回调方法划分为3种生存周期:

  • 完整生存期
    onCreate()和onDestory()
  • 可见生存期
    onStart()和onStop()
  • 前台生存期
    onResume()和onPause()

活动的启动模式

  • standard
    在standard模式下,每次启动一个活动都会创建该活动的新实例,即便A活动已经在栈顶,但是若再次启动活动A还是会新建一个活动实例
  • singleTop
    在singleTop模式下,如果待启动的活动位于栈顶的话,就不会再创建重复的活动实例,但如果由A活动进入B活动,再想进入A活动,还会建立新的A活动实例
  • singleTask
    在singleTask模式下,启动一个新的活动时,会自动在返回栈中查找是否有实例,若有直接跳转,若没有则新建
  • singleInstance
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章