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

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的原因。

最新文章

  1. 多War项目中静态文件的共享方案
  2. Solr 4.0 部署实例教程
  3. Android中的数据保存
  4. 简单方便的div垂直居中。
  5. PP
  6. Robotium简要学习
  7. 高效的数组去重(js)
  8. Linux下mysql远程连接问题
  9. canvas图像处理汇总
  10. Mysql group by,order by,dinstict优化
  11. Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类
  12. 盒子模型、IFC、BFC和Collapsing margins
  13. 输入一段字符串,统计其中的数字,字母,空格,其他字符的方法 ----python---
  14. Python:import 与__import__()
  15. Java集合类常见面试知识点总结
  16. python 协程库gevent学习--gevent数据结构及实战(三)
  17. Linux运维命令总结(-)
  18. easyui按钮linkbutton 不可用(置灰)与 可用(取消置灰)
  19. Linux:Tomcat报错: Error creating bean with name &#39;mapScheduler&#39; defined in ServletContext resource 的解决方法
  20. 004 爬虫(最初的爬虫方式,以及urllib2)

热门文章

  1. CF1029A Many Equal Substrings
  2. eclipse下properties文件中文乱码的解决方案
  3. 《剑指offer》数字在排序数组中出现的次数
  4. J2EE_Maven_POM文件配置的详解(转)
  5. Redis实战 - 4.Key
  6. selenium笔记(1)
  7. Asp.net并发请求导致的数据重复插入问题
  8. MongoDB的ORM框架——Morphia
  9. 基于centos7系统部署cobbler
  10. Git 通过ssh 配置基于Host的差异配置