Log

  1. Log.v()。verbose,详细,啰嗦;打印所有日志。
  2. Log.d()。debug。
  3. Log.i()。info。
  4. Log.w()。warn。
  5. Log.e()。error。
    使用:Log.d("tag:一般传入当前Activity","想要打印的具体内容");
    查看:通过下方提示,也可以自定义过滤器。

Toast

一种Android提供的提醒方式。
举例:

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.first_layout);    Button button1 = findViewById(R.id.button_1); //findView获取监听的元素    button1.setOnClickListener(new View.OnClickListener() {  //设置监听器        @Override        public void onClick(View v) {        //makeText里的三个参数:(Context,Toast文本,显示时长),暂时不懂Context(上下文)是个什么东西。            Toast.makeText(MainActivity.this,"你再戳一次试试!",Toast.LENGTH_SHORT).show();         }    });}

跳转页面——显式、隐式Intent

intent,意图;分显式和隐式,显式就是指明由谁跳转到谁,隐式是匹配actioncategory(这俩源自AndroidManifest.xml各个active的......里或Android系统内置action),然后由用户选择响应哪个活动。隐式举例:打开一个链接,系统通过actioncategory匹配到系统浏览器、chrome等多个活动都满足条件,然后手机就会提示你用哪个浏览器打开该链接。

1.显式intent,直接指明由A跳转到B。

Intent intent = new Intent(A.this,B.class);      //定义一个intentstartActivity(intent);         //启动intent

2.隐式intent。
第一步.在AndroidManifestactivity标签里定义actioncategory
第二步.某intent匹配actioncategory,响应该活动。
举例如下:首先,要这样。

                                                                

其次,要这样。

 Intent intent = new Intent("com.example.activitytest.ACTION_START");//对应(1)action里的字符串         startActivity(intent);

由于category是.DEFAULT默认的,所以intent匹配时只对应action就行了。
如果要在intent里表示category,可以在上面第二步的中间加一行。

 Intent intent = new Intent("com.example.activitytest.ACTION_START");   //对第一步action里的字符串 //此处增加如下category信息。相应的也要在AndroidManifest的某活动(Activity)的标签里注册BALABALA这个category。         intent.addCategory("com.example.activitytest.BALABALA")            startActivity(intent)

3.更多隐式Intent的用法
隐式Intent不仅可以调用自己程序里的活动(Activity),还可以启动其他程序的活动(Activity)。例如启动浏览器、拨号等,这些程序系统已经内置ACTION,直接用隐式intent匹配、调用就行了,不需要自己实现。例如浏览器的action是:Intent.ACTION_VIEW;拨号的action是Intent.ACTION_DIAL。
举例如下:调用浏览器。
啊┗|`O′|┛ 嗷~~,模拟器连不上网,于是网上找解决方法,有重启的、有改DNS,嫌麻烦,我直接清空模拟器数据,相当于手机恢复出厂设置,神了个奇。

书接正文,开始调用Android其他程序。
注释:Uri.parse的作用是解析字符串,下面这个例子是http协议,所以转为URL;如果调用“拨号”程序,则data部分(举例:tel:10086)根据tel协议和后面号码打开系统拨号界面。
打开浏览器:

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.first_layout);    Button button1 = findViewById(R.id.button_1);    button1.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            Intent intent = new Intent(Intent.ACTION_VIEW); //第一行            intent.setData(Uri.parse("http://www.baidu.com")); //第二行,Uri.parse将字符串转为URL,作为参数传入setData()方法。            startActivity(intent); //第三行        }    });}


打开拨号界面:

Intent intent = new Intent(Intent.ACTION_DIAL);intent.setData(Uri.parse("tel:10086"));startActivity(intent);

带数据的跳转

A向下一个活动B传递数据

A传出数据:intent.putExtra();
Intent提供了一系列putExtra()方法传递数据,该方法包含俩参数:键值对。前面"键"相当于起个名字,方便其它活动用这个名字调用数据,后面“值”才是真正要传输的数据。

B取出数据:getStringExtra、getIntExtra、getBooleanExtra等,依此类推。

intent = getIntent();String data = intent.getStringExtra("extra_data")Log.d("SecondActivity",data)

A向B发送数据:再戳一下试试!

A用startActivityForResult()方式启动B,B向A传递数据

A:先在onCreate()里用startActivityForResult()启动B,当 B finish();后返回A的onActivityResult()方法。
onActivityResult()方法里有三个参数:第一个requestCode,本活动onCreatestartActivityForResult(intent,1)里的1;第二个resultCode,B里setResult()的RESULT_OK或RESULT_CANCELED;data,B传出来的intent。结果如图表示:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.first_layout);        Button button1 = findViewById(R.id.button_1);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String data = "再戳一下试试!";                Intent intent = new Intent(MainActivity.this,SecondActivity.class);                startActivityForResult(intent,1);            }        });    }    @Override    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {        switch (requestCode) {            case 1:                if (resultCode == RESULT_OK) {                    String returnedData = data.getStringExtra("data_return");                    Log.d("MainActivity", returnedData);                }                break;                default:        }    }}

B:通过监听button返回消息并且finish,或者通过手机下方Back键(onBackPressed())返回。
返回消息:setResult()方法接受两个参数,第一个一般是RESULT_OK或RESULT_CANCELED,第二个是带有data的intent。
当B活动销毁finish时,请看上面onActivityResult()方法。

public class SecondActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.second_layout);        Button button2 = findViewById(R.id.button_2);        button2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) { //通过APP内Button返回                Intent intent = new Intent();                intent.putExtra("data_return", "试试就试试");                setResult(RESULT_OK, intent);                finish();            }        });    }    @Override    public void onBackPressed() { //通过手机下方Back键返回        Intent intent = new Intent();        intent.putExtra("data_return", "试试就试试");        setResult(RESULT_OK, intent);        finish();    }}

这篇随笔参考《第一行代码——Android》+本人学习时所犯错误总结而成,环境是Android Studio 3.3.1。

更多相关文章

  1. 设备的search按钮调用自己程序的search模块
  2. android和js互相调用的问题
  3. Android调用微信登陆、分享、支付(第二版本)
  4. android 的skia 图形引擎库
  5. Android(安卓)上的 Scala, 实战之路(二)——Hello World即遭不测
  6. Android(安卓)Content Provider在应用程序之间共享数据的原理分
  7. Android实现登录界面记住密码的存储
  8. 修改apk调用蓝牙无明确提示
  9. Android(安卓)OpenCV 安装与配置+JNI开发

随机推荐

  1. Android深入浅出之Audio第三部分Audio Po
  2. Android中gravity和weight參數的用法
  3. android R 文件生成不了
  4. 2014-11-6Android学习------Android 仿真
  5. Android Studio 使用AIDL
  6. 转载:Android进程的内存管理分析
  7. Android(安卓)重写ViewGroup 分析onMeasu
  8. Android Studio下jni应用
  9. Android系统做了哪些优化?
  10. android中的HandlerThread类的学习