网上很多关于Android studio 使用intent实现两个Activity之间的跳转,我查了很多也看了很多,感觉都没有一个详细的介绍(博主个人观点),接下来我将详细介绍如何实现点击一个按钮实现页面跳转,和一些问题以及解决的办法。
1.首先新建一个project,名字自取(我这里叫intentbutton) 2.要实现点击button跳转到其他页面,首先得有两个页面,这里我们要下创建一个新的页面 注意:我们要实现的是activity之间的跳转,所以要新建一个Activity文件,不是Java class 错误如图:
正确做法如图(根据自己的需要建不同的Activity,我这里推荐创立Empty Activity): Android Studio比较人性化,当你添加一个activity时,他会自动把相关信息写入AndroidManifest.xml文件中,同时添加activity的布局文件到资源res->layout下面。
我这里随便取个名称,叫TextViewActivity。这时layout下面自动创建的这个文件叫做activity_text_view.xml,就是TextViewActivity所对应的layout。
顺便说一句,根据创建activity的命名不同,自动创建的文件名可能各不相同。我是用refactor根据自己的喜好修改了文件名(改成了TestTextViewAcitivity)。使用refactor的好处就是,程序会自动查找文件的所有引用,并在相应的地方加以修改。如果你不在意文件名,大可不用理会这些。
如图:
为了演示activity之间的跳转结果,先完成一个布局文件,在activity_text_view.xml中布局要跳转到的页面(根据自己实际情况)下面是我的页面代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="10mm" android:height="10mm" android:background="@android:color/holo_red_dark" android:text="RED" /> <Button android:id="@+id/btn_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:width="16mm" android:height="10mm" android:background="@android:color/holo_orange_dark" android:text="ORANGE"/> <Button android:id="@+id/btn_3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:width="15mm" android:height="10mm" android:background="#FFFF00" android:text="YELLOW"/> <Button android:id="@+id/btn_4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="12mm" android:width="10mm" android:height="10mm" android:background="@android:color/holo_blue_dark" android:text="BLUE"/> <Button android:id="@+id/btn_5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="10mm" android:height="10mm" android:layout_marginTop="12mm" android:layout_toLeftOf="@id/btn_4" android:layout_marginRight="2mm" android:background="@android:color/holo_green_dark" android:text="GREEN"/> <Button android:id="@+id/btn_6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="10mm" android:height="10mm" android:layout_marginTop="12mm" android:layout_toRightOf="@id/btn_4" android:layout_marginLeft="2mm" android:background="@android:color/holo_purple" android:text="INDIGO"/> <Button android:id="@+id/btn_7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="100in" android:height="10mm" android:layout_marginTop="24mm" android:background="#FF99cc" android:text="VIOLET"/> </RelativeLayout> </RelativeLayout>4.接下来我们处理TestTextViewActivity这个文件,分两种情况: (1).如果你没有设置在第二个页面跳转到第三个页面,那么这个文件里面的代码不用动,原来是怎么样就让它怎么样就行。 代码:
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class TextViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_text_view); } }(2).看第六步,MainActivity.java文件
5.完成这个基本的activity之后,接下来我们需要完成跳转工作。在默认情况下,我们直接在MainActivity中添加跳转代码即可,如下:
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.content.Intent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn1=(Button)findViewById(R.id.btnTextView1); //给btn1绑定监听事件 btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 给bnt1添加点击响应事件 Intent intent =new Intent(MainActivity.this,TextViewActivity.class); //启动 startActivity(intent); } }); } }其中,关键的跳转工作的由这小段代码完成,
public void onClick(View v) { // 给bnt1添加点击响应事件 Intent intent =new Intent(MainActivity.this,TextViewActivity.class); //启动 startActivity(intent); }view层的控件和业务层的控件,靠id关联和映射 给btn1赋值,即设置布局文件中的Button按钮id进行关联,期中btnTextView1对应的是activity_main.xml中
Button btn1=(Button)findViewById(R.id.btnTextView1); <Button android:id="@+id/btnTextView1" ....首先建立一个传递参数的Intent,然后startActivity启动这个intent所联系起来的activity。
说明一下,Android中提供的Intent机制是用来协助应用间的交互与通讯的,更直观地说,Intent可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互。Intent(Activity1, Activity2)这种结构中,Intent相当于一个沟通的桥梁,类似于中介的角色。
其相应的layout(activity_main.xml)如下, <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btnTextView1" android:layout_width="140dp" android:layout_height="60dp" android:layout_gravity="center" android:layout_marginTop="200dp" android:background="#999999" android:text="点击跳转" android:textSize="25dp" android:textColor="#fffaaa"/> </LinearLayout>编译运行,最后的效果如下所示, 点击该按钮,就会跳出下面所示的界面:
遇到的问题及解决:
问题一:Cannot resolve symbol ‘intent’
如图:
解决: 第一种情况: 鼠标放上去后显示 “Cannot resolve symbol ‘intent’ ”,重启 Android Studio,重新 sync gradle,Clean build 都没有用。 多半是因为 Android Studio 之前发生了错误,某些 setting 出了问题。 解决方法如下: 点击菜单中的 “File” -> “Invalidate Caches / Restart”,然后点击对话框中的 “Invalidate and Restart”,清空 cache 并且重启。语法就会正确的高亮了。 点击后退出程序,手动再次打开即可。
第二种情况: 看看前面的代码有没有添加这个包,一般AS会自动帮你加,但是也有特殊情况,就自己手动加一下;
问题二:Class"X" is public, should be declared in a file named “X.java”
解决: 当类名和文件名不一致的时候就会出现这样的问题. 这时只要把文件的名字改成和类名相同就好了. 问题很低级,但是有时候猛一看可能不知所云. 问题参照:https://blog.csdn.net/u010892841/article/details/70598431
作者:韩胜业 原文地址:https://blog.csdn.net/weixin_42449035/article/details/90575945