欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第一行代码Android 【学习笔记1】

程序员文章站 2022-05-13 20:54:03
...
在创建项目时如果出现Error:Failed to resolve: com.android.support:appcompat-v7:27.+
<ahref="install.m2.repo">Install Repository and syncproject</a><br><ahref="open.dependency.in.project.structure">Show in ProjectStructure dialog</a>这个问题。
解决方法:在build.gradle的allprojects修改为:
allprojects{
    repositories {
        jcenter()
        maven {
            url"https://maven.google.com"
        }
    }

}

下面开始正文。

1.1.创建活动

选择project视图->展开app 然后选择src 选择java->点击包->New->Activity->会弹出一个对话框,然后选择相应的活动。

任何活动都需要重写Acitivity的onCreate()方法,但是Android Studio已经帮我们完成了。

1.2.创建和加载布局

右击app/src/main/res目录->new -> Directory,弹出一个新建目录的窗口。先创建一个lauout的目录,在创建一个布局文件。因为版本问题,已经自动生成了一个布局文件。

第一行代码Android 【学习笔记1】

接着回到 FirstAcitivity ,在onCreate()方法设置布局。

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

1.3 注册活动

任何一个活动都需要在AndroidMainfest.xml中注册才能生效。因为我们是用Android Studio直接创建活动的,因此自动帮我们注册好了。但是如果是自己新建一个 Java Class则需要自己去注册。

不过注册了之后程序仍然是不能运行的,因为还没有为程序配置主活动。因此需要配置主活动,方法如下:在<activity>标签的内部加入<intent-filter>标签里添加                <actionandroid:name = "android.intent.action.MAIN"/>和<category android:name = "android.intent.category.LAUNCHER"/>这两句身声明即可。程序即可运行。

1.4 使用Toast.

这是一种提醒方式。在使用前,我们需要定义一个Toast的触发点。通过makeText()方法创建一个Toast对象,然后调用show方法。makeText()方法需要3个参数,第一个参数是Context,也就是Toast要求的上下文,由于活动本身就是一个Context对象,因此直接传入活动本身即可,第二个参数是要显示文本的内容,第三个是显示的长短,有两个内置变量。

代码如下:

Button btn = findViewById(R.id.btn_1);      //声明一个按钮,并且找到对应的id
        btn.setOnClickListener(new View.OnClickListener() {     //点击事件
            @Override                   //采取匿名内部类来写
            public void onClick(View view) {
                Toast.makeText(FirstActivity.this,"You click me!", Toast.LENGTH_SHORT) .show();
                //调用Toast 的makeTest方法。最后一定要记得show()
            }
        });

效果如图:第一行代码Android 【学习笔记1】

1.5使用Menu

先创建一个Main.xml文件添加一下代码:

<menu xmlns:android = "http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/addItem"
        android:title="Add"/>
    <item
        android:id="@+id/removeItem"
        android:title="Remove"/>
</menu>

接着回到FirstActiviy中来重写onCreateOptionsMenu()方法,重写方法可以使用ctrl+O快捷键寻找相应方法。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main,menu);//调用刚刚写的xml文件
    return  true;
}

为菜单栏的选项增加相应的事件,代码如下

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.addItem:
            Toast.makeText(FirstActivity.this,"You click add",Toast.LENGTH_LONG ).show();
            break;
        case R.id.removeItem:
            Toast.makeText(FirstActivity.this,"You click remove",Toast.LENGTH_SHORT ).show();
            break;
    }
    return true;
}

1.6销毁一个活动

增加finish()即可


2使用Intent在活动之间穿梭

2.1显示Intent

btn.setOnClickListener(new View.OnClickListener() {     //点击事件
    @Override                   //采取匿名内部类来写
    public void onClick(View view) {
        Intent intent = new  Intent(FirstActivity.this , SecondActivity.class);
        startActivity(intent);//执行intent
    }
});

 

2.2隐式Intent

在AndroidMaifest.xml中在<activity>标签下配置<intent-filter>中的内容。在<action>标签中,指明了当前活动可以相应的action,要精确的指明了当前活动能够相应的intent中还可能带有的 <category>只有<action> 和 <category>中的内容同时能够匹配上Intent中制定的action 和category才可以响应。

 

2.3.向下一个活动传递数据

Intent 中提供了一系列putExtra()方法的重载,以吧我们先要的数据暂存在Intent中。比如,FirstActivity中有一个字符串,现在想把这个字符串传递到SecondActivty中,可以这样编写:

首先可以通过getIntent()方法获取用于启动SecondAcitity的Intent,然后调用getString Extra()方法 ,传入相应的键值,就可以得到相应的数据了。 不同的数据类型有不同的get方法,如果传递整形数据,使用getIntExtra()方法 以此类推。

FirstActivity代码:

public void onClick(View view) {
       String data = "hello secondactivity!";
       
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
       
intent.putExtra("extra_data",data);//第一个参数是键,用于后面从Intent中取值,第二个参数才是真正传递的数据
        startActivity(intent);
   
}
})
;

secondAcitivity

protected void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);
   
setContentView(R.layout.activity_second);
   
Intent intent = getIntent(); //获取Intent
    String data = intent.getStringExtra("extra_data");//获取数据
   
Log.d("SecondAcitity",data);//打印消息
}

 

2.4返回数据给上一个活动

Activity中还有一个startAcitivtyForResult()方法也是用去启动活动,但这个方法期望在活动销毁的时候能返回一个结果给上一个活动。

startAcitivtyForResult()方法接受2个参数,第一个参数还是Intent,第二个参数是请求吗,用于在之后的回调中判断数据的来源。

【注意代码 可能有点问题!!!!】

【可能是写错一点东西了。  没有打印出消息】

FirstActivity

btn.setOnClickListener(new View.OnClickListener() {     //点击事件
    @Override                   //采取匿名内部类来写
    public void onClick(View view) {
        Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
        startActivityForResult(intent,1);     //上面有这个方法的说明
    }
});

SecondAcitiy

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    Button btn2 = findViewById(R.id.btn_2);
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent();
            intent.putExtra("data_return","hello firstActivity");   //将数据暂存在data_return中
            //setResult 接受2个参数,第一个参数用于向上一个活动返回处理结果 一般只使用 RESULT_OK
            //或RESULT_CANCELED 这两个值。第二个参数则把带有数据的Intent传递回去
            setResult(RESULT_OK,intent);
            finish();           //销毁活动
        }
    });
}
 

 

由于我们使用startActivityForResult()方法来启动SecondAcitivy中,在SecondAcitivy被销毁之后回调上一个活动的OnAcitivyResult()方法,因此我们需要在FirstActivity中重写这个方法来得到返回的数据。【可以利用ctrl+O快捷键寻找相应方法】

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode){
        case 1:
            if(requestCode == RESULT_OK){
                String returnedData = data.getStringExtra("data_return");
                Log.d("FirstActivity",returnedData);
            }
            break;
        default:
    }
}

onActivityResult有3个参数,第一个参数requestCode 是传入码。第二个参数resultCode 我们在返回数据时传入的处理结果。第三个参数 data 是携带者返回数据的Intent.

3活动的生命周期

3.1活动状态

①运行状态 ②暂停状态 ③停止状态 ④销毁状态

3.2活动生命周期【百度截了一张图】

第一行代码Android 【学习笔记1】

后面 书上还有一些代码,就不贴了~~~~  有点懒了

 

小结:大部分都是书上的原文啦。 

所有的代码最好还是敲一下吧,毕竟只看书有点无聊吧。


相关标签: 安卓学习