Android Studio开发-day2 Activity的使用

Activity的使用

Activity是Android程序的四大组件之一,也是呈现给用户的第一印象,因此对于这个组件的编程是非常重要的。

创建Activity

创建Activity非常简单,在AS中,切换到Project目录下,寻找包文件夹,在其上右击,新建一个空的activity,AS会默认帮我们在Manifest中进行注册,并且程序会自动重写Oncreate方法

菜单选项的使用

要想在Activity中添加菜单栏,实现如下的效果:

image.png

首先需要在res目录下新建menu文件夹,在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="Add"/>
    <item
        android:id="@+id/remove_item"
        android:title="remove"/>
</menu>

此时已经可以使用AS的预览功能查看到菜单栏了,但是仍然需要在Activity中激活一下,在activity.java中重写
public boolean onCreateOptionsMenu(Menu menu){};函数,这里可以使用AS快捷键Ctrl+O,搜索此函数

重写完以上函数后,两个菜单项并不能实现其功能,需要再重写一下public boolean onOptionsItemSelected(MenuItem item) {}

public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){

            case R.id.add_item:
                Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();
                break;



        }
        return true;
    }

Toast的使用

Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。

toast的使用非常简单,只需要使用静态方法makeText()即可实现

Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();
// toast.setGravity(Gravity.CENTER, 0, 0); 实例方法,设置出现位置
/*
   toast.setGravity(Gravity.CENTER, 0, 0);
   LinearLayout toastView = (LinearLayout) toast.getView();
   ImageView imageCodeProject = new ImageView(getApplicationContext());
   imageCodeProject.setImageResource(R.drawable.icon);
   toastView.addView(imageCodeProject, 0);
*/
// 设置带图片的toast

效果图:


Toast效果图
Toast效果图

Activity切换

最简单的切换方式,显式Intent,即指明打开新的Activity的名字:

Intent intent = new Intent(MainActivity.this,Main2Activity.class);// 去往的参数填一个class文件
startActivity(intent);

复杂一点的是隐式切换:


Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

这里是打开系统默认的Activity,比如这里打开的就是浏览器,当然,如果别的Activity也可以在manifest中进行注册,隐式Intent打开的是符合注册条件的activity,若存在多个符合条件会提供给用户进行选择

        <activity android:name=".Main3Activity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="http"/>
            </intent-filter>
        </activity>

Intent传递数据

使用Intent可以在Activity中传递数据,一种简单的方法是:

String data = "Hello,My activity";

Intent intent = new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("extra_data",data);
startActivityt();

// Main2Activity中接受数据的部分
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
Log.d(TAG, data);

还有一种方法是调用Main2Activity的MainActivity从被调用的获得数据:

// MainActivity中的代码
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(intent,1);

//另外要重写onActivityResult来获取返回数据,这里的requestCode就是我们刚才设置的1,这样这个函数就可以处理多个request了
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode){
            case 1:
                if (resultCode==RESULT_OK){
                    String returndata = data.getStringExtra("data_back");
                    Log.d(TAG,returndata);

                }break;
            default:

        }

    }
// Main2Activity中的代码
Intent intent = new Intent();
intent.putExtra("data_back","Hello,my mainactivity");
setResult(RESULT_OK,intent);

// 也可以重写onBackPress的方法,加入上面代码
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,522评论 25 707
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,358评论 0 17
  • 今天是2016年的第一天,又到了一年一度年终总结的时候,未能免俗。 今天去祈福进香,没错我不是彻底的唯物主义者。而...
    没事儿姑娘阅读 300评论 0 0
  • 连续两篇小文上了首页,群里小伙伴也是捷报频传,写作热情高涨。 上周两个休息日考了三场试,考试当天夜里两点多睡不着,...
    微危道人阅读 520评论 22 30
  • 我住在一个我从来都没见过的地方,几层楼的房子,然而却并不是那种豪华的别墅,而是那种俯视图像回字一样的格局的破旧水泥...
    请叫我徐先生阅读 1,306评论 0 0