一.首先检查我们的代码:

FirstActivity.java(主活动程序当中的代码):
Button3监听器后面的代码就是我们隐式Intent的业务逻辑所在了,大家可以往下面看看,大概在代码的第57行。
 package com.example.lenovo.activitytest;

 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.content.Intent; public class FirstActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);//第一个参数表示我们通过哪一个资源来引用菜单当中的全部资源
// 第二个参数表示菜单被添加到哪一个对象当中
return true;//这句话表示我们创建的菜单是可以显示出来的,但是仅仅显示还是不够的,还需要真正地让菜单上的选项起作用。
}
@Override
public boolean onOptionsItemSelected(MenuItem item)//这里定义菜单为一个响应式事件
{
switch (item.getItemId())
{
case(R.id.add_item): Toast.makeText(this,"你选择了增加",Toast.LENGTH_SHORT).show();
break;
case(R.id.remove_item):
Toast.makeText(this,"你选择了减少",Toast.LENGTH_SHORT).show();
break;
default://这个关键字是可以不要的
}
return true;//将菜单当中的显示出来
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button1=(Button)findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast toast=Toast.makeText(FirstActivity.this,null,Toast.LENGTH_SHORT);
toast.setText("只有傻逼才会按这个按钮");
toast.show();//利用这种方法就可以去掉前面的APP名称了,而且这种创建对象的方法也更可以令人理解
}
});
Button button2=(Button)findViewById(R.id.button_2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this,"只有不学习的人才会按这个按钮",
Toast.LENGTH_SHORT).show();
}
});
Button button4=(Button)findViewById(R.id.button_4);
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
我们这里已经使用了显示intent,现在开始进行隐式intent的使用,首先应该在xml当中进申明
*///这就是所谓的显示intent了,相对于来说这已经是十分容易实现的了。
Intent intent=new Intent("com.example.lenovo.activitytest.ACTION_START");
startActivity(intent);
}
});
Button button3=(Button)findViewById(R.id.button_3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
}
}); } }

二.注册在主活动上的代码需要补上:

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lenovo.activitytest"> <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".FirstActivity"
android:label="这是一个让人感到好笑的APP">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity"
android:label="这是一个严肃的APP">
<intent-filter><!-- 这里是一个隐式的intent申明-->
<action android:name="com.example.lenovo.activitytest.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="com.example.lenovo.activitytest.MY_CATEGORY"/>
</intent-filter>
</activity>
</application> </manifest>

从中我们可以看到我们注册在XML界面上,<intent-filter>后面的代码为<action android:name="com.example.lenovo.activitytest.ACTION_START"/>,action中间name的名称一定要注意。这个里面的名称是不能够乱写的,这里名称将会和刚刚前面主活动当中的代码相呼应:

         Button button4=(Button)findViewById(R.id.button_4);
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
我们这里已经使用了显示intent,现在开始进行隐式intent的使用,首先应该在xml当中进申明
*///这就是所谓的显示intent了,相对于来说这已经是十分容易实现的了。
Intent intent=new Intent("com.example.lenovo.activitytest.ACTION_START");
startActivity(intent);
}
});

因此我们可以看到,里面的字符串均是com.example.lenovo.activitytest,不能够乱写。这行字符串是怎么得到的呢?我们可以在主活动当中的第一行代码当中可以找到其代码为:package com.example.lenovo.activitytest。这样的话,才可以进行正确地调用主活动当中的方法,实现隐式intent跳转。如果在xml当中仅仅写上:com.example.lenovo.activitytest.ACTION_START的话,这个活动在APP进行运行的时候就不会实现正常的跳转,从而销毁活动,造成失灵。这就是我们Android Stuidio无法实现隐式Intent的原因。

安卓开发学习笔记(四):Android Stuidio无法实现隐式Intent是为什么?的更多相关文章

  1. 安卓开发学习笔记(三):Android Stuidio无法引用Intent来创建对象,出现cannot resolve xxx

    笔者在进行安卓开发时,发现自己的代码语法完全没有问题.尤其是创建intent对象的时候,语法完全是正确的,但是Android Stuidio却显示报错,Intent类显示为红色,如图所示: 代码如下所 ...

  2. 安卓开发学习笔记(二):如何用Android Stuidio在res资源下创建xml视图文件

    笔者在看了相关的教程之后发现教程当中的资源已经过时了.当我们在创建了一个新的空白的工程之后,会发现其文件夹下面的分文件夹目录和官方的教程文件结构完全不同,因此会引起很多误解.笔者使用的是最新版的And ...

  3. 安卓开发学习笔记(五):史上最简单且华丽地实现Android Stutio当中Webview控件https/http协议的方法

    一.我们先在XML当中自定义一个webview(Second_layout.xml) 代码如下: <?xml version="1.0" encoding="utf ...

  4. python-django开发学习笔记四

    先插入一条广告,博主新开了一家淘宝店,经营自己纯手工做的发饰,新店开业,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!店名: 小鱼尼莫手工饰品店经营: 发饰.头花.发夹.耳环等(手工制作)网店: ...

  5. Android中显示和隐式Intent的使用

    显示启动activity                                                                                         ...

  6. 安卓开发学习笔记(一):如何用Android Stuidio导出apk文件?

    一,首先,我们在菜单栏上找到这一栏: 然后点击build,再点击generate apk,然后出现以下界面: 由于之前我们并没有进行apk文件的生成,因此需要这个apk key做一个验证,以防您的ap ...

  7. 安卓开发学习日记 DAY2——android项目文件

    当一个android项目建立时,会有一个目录,以下为目录所包含内容 src:放置java源代码 gen:基本不会做任何更改,放置自动生成的配置文件(主要是R文件) Android4.4.2:放置当前版 ...

  8. 安卓开发学习笔记(七):仿写腾讯QQ登录注册界面

    这段代码的关键主要是在我们的相对布局以及线性布局上面,我们首先在总体布局里设置为线性布局,然后再在里面设置为相对布局,这是一个十分常见的XML布局模式. 废话不多说,直接上代码:一.activity. ...

  9. Android开发学习笔记-关于Android的消息推送以及前后台切换

    下面是最简单的Android的消息推送的实现方法 package com.example.shownotic; import java.util.Random; import android.supp ...

随机推荐

  1. python学习记录20190121

    print 语句默认会给每一行添加一个换行符.只要在print 语句的最后添加一个逗号(,),就可以改变它这种行为 带逗号的print语句输出的元素之间会自动添加一个空格 print 没有任何参数的p ...

  2. 解决vuecli3.0构建的vue2.0项目在IE9可能出现的兼容性问题

    1,unit8Array等未定义问题 解决办法 <1>npm install @babel/polyfill <2>分别在main.js和vuex的主文件 import '@b ...

  3. Lesson 2-1 (数据结构,序列通用的操作)

    2.0 数据结构 --- 数据结构是以某种方式组合起来的数据元素集合. --- python的常见的数据结构 2.1 序列(sequence) --- 序列中的每个元素都有编号,即索引(也称为下标). ...

  4. Python3学习笔记十三

    1.   css 老师的博客:http://www.cnblogs.com/yuanchenqi/articles/6856399.html 选择器:找到想要改变的标签 css的功能:渲染和布局 2. ...

  5. Ansible-Zabbix-基础agent批量装机

    ansible 批量装机-Zabbix篇 ############################# 小错误区:特此警示,问题要全面化,不要单纯想着你这边的问题,有可能也是对面的问题,反则亦此,学会深 ...

  6. urls控制器

    路由分发include('blog.urls')): 将以指定名称开头的url分发到指定app中去匹配 urlpatterns = [ url(r'^admin/', admin.site.urls) ...

  7. IE8 disable 兼容行问题

    在chrome 下 如果样式设置为disabled 则不能点击, 但是在IE9 或者IE8 则还是可以点击

  8. 在同一个Apache服务器软件上部署多个站点的基础方法

    这篇文章主要介绍了Apache中Virtual Host虚拟主机配置及rewrite模块中的重要参数说明,是在同一个Apache服务器软件上部署多个站点的基础方法,需要的朋友可以参考下(http:// ...

  9. 蓝桥杯 黄金连分数(BigDecimal的使用)

    标题: 黄金连分数 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现.有时需要把这个数字求得很精确. 对于某些精密工程,常数的精度很重要.也许你听说过哈勃太空望远镜 ...

  10. 我们为什么不用 Select * 吗?

    应用程序慢如牛,原因多多,可能是网络的原因.可能是系统架构的原因,还有可能是数据库的原因. 那么如何提高数据库SQL语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而性能调优跟程序员们 ...