Android Activity基本应用

Activity 的四种状态
运行状态
暂停状态 (一般是弹出对话框时)
停止状态
销毁状态

Activity的什么周期
启动过程onCreat->onStart->onResume运行(可见)->按返回时调用onPause进入暂停状态->onstop停止activity->onDestroy销毁activity
如何在主Activity前面添加启动界面?
在Manifest.xml中 将activity android:name="要启动的activity”

创建Activity
1、创建继承自Activity
新建class

public class detailActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);//2、重写需要的回调方法
        setContentView(R.layout.activity_main);//3、设置要显示的视图 
    }
}

2、在配置文件中配置activity
在这里插入图片描述

也可以通过android studio提供的向导来方便的创建activity
右键->new->activity

启动和关闭Activity

新创建的activity需要启动才能显示在屏幕上
1、可以作为入口activity(程序中只有一个activity时)
在AndroidManifest.xml中
activity需要通过intent来表达自己的“想法”
2、其他activity(多个activity时,需要在JAVA中启动)

如单击按钮,启动新建的activity

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bnt = (Button) findViewById(R.id.bnt1);
        bnt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,detailActivity.class);
                startActivity(intent);//启动activity
            }
        });
    }
}

关闭activity

finish();
单击按钮,关闭当前activity

public class detailActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        Button button = (Button) findViewById(R.id.cls_bnt);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
}

小技巧刷新activity
onCreate(null);

Activity之间数据交互Bundle
bundle是键值对的组合,可以将数据以键值对的形式保存
数据->存入Bundle->putExtras()方法把携带的数据保存在Intent中->startActivity启动另一个activity

1、MainActivity中存入数据

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bnt = (Button) findViewById(R.id.bnt1);
        bnt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = ((EditText)findViewById(R.id.edtTxt)).getText().toString();//获取输入的内容

                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                Bundle bundle = new Bundle();
                bundle.putCharSequence("datax",str);//数据存入
                intent.putExtras(bundle);//bundle存入intent
                startActivity(intent);//启动activity
            }
        });
    }
}

2、在新的Activity中调用数据

public class Main2Activity extends AppCompatActivity {

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

        Button button = (Button) findViewById(R.id.cls_bnt);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        Intent intent = getIntent();//获取intent
        Bundle bundle = intent.getExtras();
        String str = bundle.getString("datax");//获取bundle中的数据

        TextView txt = findViewById(R.id.txt1);
        txt.setText(str);//显示输入的数据
    }
}

调用另一个Activity并返回结果
使用startActivityForResult();而不是startActivity()启动另一个activity

实现选择头像功能
在这里插入图片描述

在这里插入图片描述
首先在MainActivity中创建ImageView和button
在这里插入图片描述
MainActivity中打开新的activity

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {//获取选择结果并显示
        super.onActivityResult(requestCode, resultCode, data);
        if ((requestCode == 0x12)&&(resultCode == 0x12)){
            Bundle bundle = data.getExtras();//
            int imageId = bundle.getInt("imageid");
            ImageView imageView = (ImageView)findViewById(R.id.imgV);
            imageView.setImageResource(imageId);
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bnt = (Button) findViewById(R.id.bnt1);
        bnt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                startActivityForResult(intent,0x12);//打开新的Activity并设置请求id
            }

        });

    }
}

在另一个activity的xml中创建GridView
在这里插入图片描述
设置GridView要显示的内容,并监听点击事件

public class Main2Activity extends AppCompatActivity {

    private  int[] pic = new int[] {R.mipmap.img1,R.mipmap.img2,R.mipmap.img3,R.mipmap.img4,R.mipmap.img5,R.mipmap.img6};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        GridView gv = (GridView) findViewById(R.id.gridV);
        List<Map<String,Object>> listitem = new ArrayList<Map<String, Object>>();
        for (int i = 0;i<pic.length;i++)
        {
            Map<String,Object> map = new HashMap<String ,Object>();//定义map对象
            map.put("image",pic[i]);//将图片添加到map中
            listitem.add(map);//将map添加到list中
        }

        //参数:上下文对象,list对象,布局文件控制图片显示,字符串数组指定map中的key,整形数组指定布局文件中组件id
        SimpleAdapter simpleAdapter = new SimpleAdapter(this,listitem,R.layout.cell,new String[]{"image"},new int[]{R.id.cellimgV});
        gv.setAdapter(simpleAdapter);

        gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {//获取选中的图像
                Intent intent = getIntent();
                Bundle bundle = new Bundle();
                bundle.putInt("imageid",pic[position]);//position 为当前保存的图像
                intent.putExtras(bundle);
                setResult(0x12,intent);//设置返回码,与启动activity时的请求码时一致的
                finish();

            }
        });
    }
}

最后在MainActivity中获取Intent中存放的数据,并显示。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值