网站实名认证功能怎么做公司变更地址流程
news/
2025/10/5 11:12:37/
文章来源:
网站实名认证功能怎么做,公司变更地址流程,wordpress 评论模板,乐达网站建设上一节#xff0c;掌握了活动的创建#xff0c;但是在启动器中点击应用的图标只会进入到该应用的主活动#xff0c;那么#xff0c;如何从主活动跳转到其他活动呢#xff1f;显式IntentIntent有多个构造函数#xff0c;其中一个是Intent(Context packContext,Class?…上一节掌握了活动的创建但是在启动器中点击应用的图标只会进入到该应用的主活动那么如何从主活动跳转到其他活动呢显式IntentIntent有多个构造函数其中一个是Intent(Context packContext,Class?cls)这个构造函数接收两个参数一个参数Context要求提供一个启动活动的上下文第二个参数Class则是想要启动的目标活动。Intent intent new Intent(FirstActivity.this,SecondActivity.class);//构造一个IntentstartActivity(intent);// Activity类中提供了一个startActivity()方法这个方法专门用来启动活动实现功能通过在FirstActivity这个活动的基础上打开SecondActivity这个活动隐式Intent更多隐式Intent用法setData()方法接收一个Uri对象主要用于指定当前Intent正在操作的数据而这些数据通常都是以字符串形式传入到Uri.parse()方法解析产生的。
intent.setData(Uri.parse(https://www.baidu.com));向下一个活动传递数据putExtra()方法传递了一个字符串这里putExtra()方法接收两个参数第一个是键(类似于id)用于后面从Intent中取值第二个参数才是要传递的数据。返回数据给上一个活动Activity中还有一个startActivityForResult方法也是用来启动活动的但是这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。
------------------------------------------------------------------------------------
下面具体分析
Intent是Android程序中个组件之间进行交互的一种重要方式它不仅可以指明当前想要执行的动作还可以在不同组件之间传递数据。Intent一般可被用于启动活动启动服务以及发送广播等场景。
Intent 分为显示Intent和隐式Intent。显式Intent
快速在ActivityTest中创建一个活动右击com.example.activitytest包new一个Empty Activity将活动命名为SecondActivity,并勾选Generate Layout File给布局文件命名为second_layout但不要勾选Launcher Activity选项。 完成创建会生成SecondActivity.java和second_layout.xml两个文件编辑second_layout.xml文件添加代码添加一个Button代码如下勾选Generate Layout File会自动生成SecondActivity.java和second_layout.xml两个文件并且second_layout.xml会在SecondActivity.java加载不勾选Generate Layout File不会自动生成second_layout.xml这个文件需要再手动创建并在SecondActivity.java加载second_layout.xml即在onCreate()方法中添加setContentView(R.layout.second_layout);
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationvertical android:layout_widthmatch_parentandroid:layout_heightmatch_parentButtonandroid:idid/button_2android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textButton 2/
/LinearLayout
另外每一个活动都需要在AndroidManifest.xml文件中注册不过这一步AS已经自动完成了。打开AndroidManifest.xml文件代码如下
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.activitytestapplicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/AppThemeactivity android:name.FirstActivityintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activityactivity android:name.SecondActivity/activity/application/manifest
因为SecondActivity不是主活动因此不需要配置intent-filter标签里的内容。Intent有多个构造函数其中一个是Intent(Context packContext,Class?cls)这个构造函数接收两个参数一个参数Context要求提供一个启动活动的上下文第二个参数Class则是想要启动的目标活动。Activity类中提供了一个startActivity()方法这个方法专门用来启动活动它接收一个Intent参数这里我们将构建好的Intent传入startActivity()方法就可以启动目标活动了修改FirstActivity的按钮事件代码如下
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);Button button1 (Button)findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// Toast.makeText(FirstActivity.this,You clicked Button 1,Toast.LENGTH_SHORT).show();提醒Intent intent new Intent(FirstActivity.this,SecondActivity.class);startActivity(intent);}});}
先构建出一个Intent以FirstActivity.this为上下文传入SecondActivity.class为目标活动。即在FirstActivity这个活动的基础上打开SecondActivity这个活动然后通过startActivity()方法来执行这个Intent。
现在可以运行程序了。
按back键就可以销毁当前活动返回上一个活动。隐式Intent
所谓隐式Intent,并不明确指出我们想要启动哪一个活动而是指定以一系列更为抽象的action和category等信息然后交由系统去分析这个Intent并帮我们找出合适的活动去启动。所谓合适的活动是指可以相应我们这个隐式Intent的活动。目前SecondActivity还无法去响应隐式Intent。
通过在activity标签下配置intent-filter的内容可以指定当前活动能够响应的action和category打开ActivityManifest.xml文件中添加如下代码
activity android:name.SecondActivityintent-filteraction android:namecom.example.activitytest.ACTION_START/category android:nameandroid.intent.category.DEFAULT//intent-filter
/activity
我们指明了当前活动可以响应com.example.activitytest.ACTION_START这个action更精确的指明了当前活动能够响应的Intent中可能还带有的category。并且只有action和category中的内容同时能够匹配上Intent中指定的action和category时这个活动才能响应该Intent。
修改FirstActivity中按钮的点击事件代码如下:
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);Button button1 (Button)findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// Toast.makeText(FirstActivity.this,You clicked Button 1,Toast.LENGTH_SHORT).show();提醒//Intent intent new Intent(FirstActivity.this,SecondActivity.class);//startActivity(intent);Intent intent new Intent(com.example.activitytest.ACTION_START);startActivity(intent);}});}这里是Intent的另一个构造函数直接将action的字符串传了进去表明我们想要启动能够响应com.example.activitytest.ACTION_START这个action 的活动。因为android.intent.category.DEFAULT是一种默认的category但是在调用startActivity()方法的时候会自动将这个默认的category添加到Intent中所以可以不用写android.intent.category.DEFAULT这条代码而且编译之后,也不会再Intent里自动添加。
现在又可以运行一下程序。每个Intent中只能指定一个action但却能指定多个category。现在我们只有一个默认的category并且这条语句并不存在。我们可以再添加一个自定义category。
修改FirstActivity中的按钮的点击事件。代码如下protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);Button button1 (Button)findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// Toast.makeText(FirstActivity.this,You clicked Button 1,Toast.LENGTH_SHORT).show();提醒//Intent intent new Intent(FirstActivity.this,SecondActivity.class);//startActivity(intent);Intent intent new Intent(com.example.activitytest.ACTION_START); intent.addCategory(com.example.activitytest.MY_CATEGORY);startActivity(intent);}});}我们指定了一个自定义的category,值为com.example.activitytest.MY_CATEGORY。那我们是不是也可以指定一个自定义的category值为com.example.activitytest.MYYY_CATEGORY呢
重新运行成我们发现程序崩溃了在logcat界面查看错误日志我们发现没有任何一个活动可以响应我们的Intent,因为我们刚刚在Intent中新增了一个category而SecondActivity的intent-filter标签中并没有声明这个category。
那这样看来我们是不是可以在SecondActivity的intent-filter标签中声明这个category来挽救这个程序呢
我们姑且一试。发现是可以的程序又正常了。代码如下
activity android:name.SecondActivityintent-filteraction android:namecom.example.activitytest.ACTION_START/category android:nameandroid.intent.category.DEFAULT/ category android:namecom.example.activitytest.MY_CATEGORY//intent-filter/activity这样或许才算是真正意义上的“只有action和category中的内容同时能够匹配上Intent中指定的action和category时这个活动才能响应该Intent”更多隐式Intent的用法
使用隐式Intent我们不仅可以启动自己程序内的活动还可以启动其他程序的活动这使得Android多个应用程序之间的功能共享成为了可能。好比你需要展示一个网页但是你没必要自己去实现一个浏览器只需要调用系统的浏览器即可。
修改FirstActivity中的按钮点击事件的代码如下
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);Button button1 (Button)findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// Toast.makeText(FirstActivity.this,You clicked Button 1,Toast.LENGTH_SHORT).show();//提醒//Intent intent new Intent(FirstActivity.this,SecondActivity.class);//显示Intent//startActivity(intent);//启动intent//Intent intent new Intent(com.example.activitytest.ACTION_START);//1个Intent1个默认的category(DEFAULT)1个自定义的category(MY_CATEGORY)//intent.addCategory(com.example.activitytest.MY_CATEGORY);//startActivity(intent);Intent intent new Intent(Intent.ACTION_VIEW);//ACTION_VIEW是一个Android系统内置的动作其常量值为android.intent.action.VIEWintent.setData(Uri.parse(https://www.baidu.com));startActivity(intent);}});}首先指定了action是Intent.ACTION_VIEW这是一个android系统的内置动作其常量值为android.intent.action。然后将Uri.parse()方法将一个网址字符串解析成一个Uri对象再调用Intent的setData()方法将这个Uri对象传递进去。setData()方法接收一个Uri对象主要用于指定当前Intent正在操作的数据而这些数据通常都是以字符串形式传入到Uri.parse()方法解析产生的。我们还可以在intent-filter标签中再配置一个data标签用于精确地指定当前活动能够响应什么类型的数据。只有data标签中指定的内容和Intent中携带的Data完全一致时当前活动才能够响应该Intent.
让我们再新建一个ThirdActivity接着详解上面的内容。
右击com.example.activitytestnew一个Empty Activity新建ThirdActivity首先不勾选Generate Layout File因为作者发现自己勾选之后产生Root element的不是默认的LinearLayout类型的而是其他类型在这里我们分别手动创建Activity和对应的布局文件,并在onCreate()中添加加载语句:setContentView(R.layout.third_layout);
ThirdActivity创建完成后编辑third_layout.xml文件代码如下
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationvertical android:layout_widthmatch_parentandroid:layout_heightmatch_parentButtonandroid:idid/button_3android:layout_widthmatch_parentandroid:layout_heightwrap_content android:textButton 3//LinearLayout
简言之就是添加了一个Button。
然后在AndroidManifest.xml文件中修改ThirdActivity中注册信息代码如下我们只包含ThirdActivity
activity android:name.ThirdActivity intent-filteraction android:nameandroid.intent.action.VIEW/category android:nameandroid.intent.category.DEFAULT/data android:schemehttp//intent-filter
/activity
其中这个acitivity是自动帮我们注册里面的intent-filter是需要我们手动写入的。我们在intent-filter中配置了当前活动能够响应的action是Intent.ACTION.VIEW的常量值而category则毫无疑问制定了默认的category值另外在data我们通过android:scheme指定了数据的协议必须是http协议这样ThirdActivity应该就和浏览器一样能够响应一个打开网页的Intent了。
现在我们又可以去运行一下程序了。除了http协议我们还可以指定其他许多协议比如geo表示显示地理位置tel表示拨打电话我们可以在程序中调用系统拨号界面。代码如下
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);Button button1 (Button)findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// Toast.makeText(FirstActivity.this,You clicked Button 1,Toast.LENGTH_SHORT).show();提醒//Intent intent new Intent(FirstActivity.this,SecondActivity.class);//显示Intent//startActivity(intent);//启动intent//Intent intent new Intent(com.example.activitytest.ACTION_START);//1个Intent1个默认的category(DEFAULT)1个自定义的category(MY_CATEGORY)//intent.addCategory(com.example.activitytest.MY_CATEGORY);//startActivity(intent);// Intent intent new Intent(Intent.ACTION_VIEW);//ACTION_VIEW是一个Android系统内置的动作其常量值为android.intent.action.VIEW// intent.setData(Uri.parse(https://www.baidu.com));// startActivity(intent);Intent intent new Intent(Intent.ACTION_DIAL);//ACTION_DIAL是一个Android 系统的内置动作在Data部分指定了协议是tel号码是10086.intent.setData(Uri.parse(tel:10086));startActivity(intent);}});
现在我们又可以运行一下程序了。向下一个活动传递数据
我们可以简单的使用Intent来启动一个活动其实Intent还可以在启动活动的时候传递数据。
Intent中提供了一些列putExtra()方法的重载可以把我们想要传递的数据暂存在intent中启动了另一个活动后只需要把这些数据再从Intent中取出就可以了可以在FirstActivity中定义一个字符串现在想把这个字符串传递到SecondActivity中可以这样编写代码如下
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);Button button1 (Button)findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// Toast.makeText(FirstActivity.this,You clicked Button 1,Toast.LENGTH_SHORT).show();提醒//Intent intent new Intent(FirstActivity.this,SecondActivity.class);//显示Intent//startActivity(intent);//启动intent//Intent intent new Intent(com.example.activitytest.ACTION_START);//1个Intent1个默认的category(DEFAULT)1个自定义的category(MY_CATEGORY)//intent.addCategory(com.example.activitytest.MY_CATEGORY);//startActivity(intent);// Intent intent new Intent(Intent.ACTION_VIEW);//ACTION_VIEW是一个Android系统内置的动作其常量值为android.intent.action.VIEW// intent.setData(Uri.parse(https://www.baidu.com));// startActivity(intent);//Intent intent new Intent(Intent.ACTION_DIAL);//ACTION_DIAL是一个Android 系统的内置动作在Data部分指定了协议是tel号码是10086.//intent.setData(Uri.parse(tel:10086));//startActivity(intent); String data Hello SecondActivity;Intent intent new Intent(FirstActivity.this,SecondActivity.class);intent.putExtra(extra_data,data);startActivity(intent);}});}
我们是使用显式Intent来启动SecondActivity并通过putExtra()方法传递了一个字符串这里putExtra()方法接收两个参数第一个是键(类似于id)用于后面从Intent中取值第二个参数才是要传递的数据。
然后我们要在SecondActivity中将要传递的数据取出并打印出来。在SecondActivity.java文件进行操作代码如下
public class SecondActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.second_layout); Intent intent getIntent();String data intent.getStringExtra(extra_data);Log.d(SecondActivity,data);}
}
首先通过getIntent()方法来获取到用来启动SecondActivity的Intent然后调用getStringExtra()方法来获取传递的数据如果传递的数据是整型则调用getIntExtra()方法如果传递的是布尔类型数据则调用getBooleanExtra()方法。
现在我们又可以运行程序了。点击Button1 会跳转到SecondActivity查看logcat打印信息。我们可以看到从FirstActivity传递来的数据。返回数据给上一个活动
既然可以给下一个活动传递数据是不是也可以给上一个活动返回数据呢?不过不同的是返回上一个活动只需要按一下Back键就可以了没有一个用于启动活动的Intent来传递数据。
查阅文档会发现Activity中还有一个startActivityForResult方法也是用来启动活动的但是这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。startActivityForResult()方法接收两个参数第一个参数是Intent第二个参数是请求码用于在之后的回掉中判断数据的来源。修改FirstActivity中按钮的点击事件代码如下
public void onClick(View view) {// Toast.makeText(FirstActivity.this,You clicked Button 1,Toast.LENGTH_SHORT).show();提醒//Intent intent new Intent(FirstActivity.this,SecondActivity.class);//显示Intent//startActivity(intent);//启动intent//Intent intent new Intent(com.example.activitytest.ACTION_START);//1个Intent1个默认的category(DEFAULT)1个自定义的category(MY_CATEGORY)//intent.addCategory(com.example.activitytest.MY_CATEGORY);//startActivity(intent);// Intent intent new Intent(Intent.ACTION_VIEW);//ACTION_VIEW是一个Android系统内置的动作其常量值为android.intent.action.VIEW// intent.setData(Uri.parse(https://www.baidu.com));// startActivity(intent);//Intent intent new Intent(Intent.ACTION_DIAL);//ACTION_DIAL是一个Android 系统的内置动作在Data部分指定了协议是tel号码是10086.//intent.setData(Uri.parse(tel:10086));//startActivity(intent);//String data Hello SecondActivity; //向下传递数据//Intent intent new Intent(FirstActivity.this,SecondActivity.class);//intent.putExtra(extra_data,data);//startActivity(intent);Intent intent new Intent(FirstActivity.this,SecondActivity.class);startActivityForResult(intent,1);}
使用了startActivityForResult()方法来启动SecodActivity请求码只要是一个唯一值就可以了这里传入了1。
我们要在SecondAcitivity中给按钮注册点击事件并在点击事件中添加返回数据类型的逻辑代码如下Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.second_layout);// Intent intent getIntent();//String data intent.getStringExtra(extra_data);//Log.d(SecondActivity,data);Button button2 (Button) findViewById(R.id.button_2);button2.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Intent intent new Intent();intent.putExtra(data_return,Hellow FistActivity);setResult(RESULT_OK,intent);finish();}});}
我们还是构建了一个Intent只不过这个Intent不仅仅是用来传递数据而已它没有指定任何的意图紧接着把要传递的数据存放在Intent中然后调用了setResult()方法setResult方法是非常重要的是专门用来向上一个活动传递数据。setResult()方法接收两个参数第一个参数是用用于向上一个活动返回处理结果一般只使用RESULT_OK或RESULT_CANCELED这两个值第二个参数则把带有数据的Intent传递回去然后调用finish()方法来销毁当前活动。这样就实现了在销毁当前活动时把要传递的数据返回给上一个活动。
由于我们是使用startActivityForResult()方法来启动SecondActivity的在SecondActivity被销毁后会回调上一个活动的onActivityResult()方法因此我们需要在FirstActivity中重写这个方法来得到这个数据。代码如下
Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode){case 1:if(resultCode RESULT_OK){String ReturnedData data.getStringExtra(data_return);Log.d(FirstActivity,ReturnedData);}break;default:}}
onActivityResult()方法带有三个参数第一个参数是requestCode即我们在启动活动时传入的请求码来判断数据来源第二个参数是resultCode处理结果是否成功就是我们在返回数据时传入的数据集。第三个参数data就是我们携带着返回数据的intent。
现在我们又可以运行程序了。
但是当我们不是通过点击SecondActivity的按钮来返回数据而是通过按下Back键这样数据是不是没有办法返回了呢我们可以在SecondActivity中重写onBackPressed()方法代码如下Overridepublic void onBackPressed() {Intent intent new Intent();intent.putExtra(data_return,Hello FirstActivity);setResult(RESULT_OK,intent);finish();}
按下Back键就会执行onBackPressed()方法中的代码。在override处按下Ctrl O就可以出现你重写的方法你就可以选择你要重写的方法。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928173.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!