实验三:Intent与Activity的使用

编程入门 行业动态 更新时间:2024-10-10 01:27:19

实验三:<a href=https://www.elefans.com/category/jswz/34/1769658.html style=Intent与Activity的使用"/>

实验三:Intent与Activity的使用

实验三:Intent与Activity的使用

3.1 实验目的

本次实验旨在帮助大家熟练掌握Intent和Activity的使用。Intent的最常见用途是绑定应用程序组件,它能够在应用程序的Activity之间启动、停止和传输数据。同时,我们还将通过添加用户名和密码的示例程序来演示如何使用Intent。

3.2 实验要求

  • 掌握创建、配置、启动和关闭Activity的方法

  • 掌握如何使用Bund-e在Activity之间交换数据

  • 掌握Intent对象的使用

3.3 实验内容

练习3.1 从一个Activity跳到另一个Activity

编写Android程序,实现根据输入的生日判断星座

步骤 1: 创建新项目
  1. 在 Android Studio 中创建一个新项目,命名为 “ZodiacCalculator”。
步骤 2: 设计界面
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="16dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:padding="20dp"android:text="欢迎使用星座计算器"android:textSize="24sp"android:textStyle="bold" /><LinearLayoutandroid:id="@+id/linearLayout1"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center_vertical"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="阳历生日:" /><EditTextandroid:id="@+id/birthday"android:minWidth="100dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:inputType="date" /></LinearLayout><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:text="格式:YYYY-MM-DD 例如:2012-01-01"android:textSize="12sp" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginTop="16dp"android:text="确定"android:textSize="16sp" /></LinearLayout>
步骤 3: 创建第二个Activity
  1. 创建一个新的Activity,命名为 ResultActivity
  2. activity_result.xml 中添加一个TextView用于显示生日和星座。
activity_result.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="16dp"><TextViewandroid:id="@+id/birthday"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:padding="10dp"android:text="阳历生日"android:textSize="20sp"android:textStyle="bold" /><TextViewandroid:id="@+id/result"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:padding="10dp"android:text="星座"android:textSize="24sp"android:textColor="#8869A5"android:textStyle="bold" />
</LinearLayout>
步骤 4: 创建Info类
  1. 创建一个名为 Info.java 的类,用于保存生日信息。
Info.java:
package com.example.zodiaccalculator;import java.io.Serializable;public class Info implements Serializable {private static final long serialVersionUID = 1L;private String birthday = "";public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}
}
步骤 5: 实现主Activity逻辑
  1. MainActivity.java 中,获取用户输入的生日,验证输入,传递信息到下一个Activity。
MainActivity.java:
package com.example.zodiaccalculator;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button1);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Info info = new Info();if ("".equals(((EditText) findViewById(R.id.birthday)).getText().toString())) {Toast.makeText(MainActivity.this, "请输入您的阳历生日,否则不能计算!", Toast.LENGTH_SHORT).show();return;}String birthday = ((EditText) findViewById(R.id.birthday)).getText().toString();info.setBirthday(birthday);Bundle bundle = new Bundle();bundle.putSerializable("info", info);Intent intent = new Intent(MainActivity.this, ResultActivity.class);intent.putExtras(bundle);startActivity(intent);}});}
}
步骤 6: 在 ResultActivity 中显示结果
  1. ResultActivity.java 中获取传递的生日信息,并计算星座。
ResultActivity.java:
package com.example.zodiaccalculator;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;public class ResultActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_result);TextView birthday = (TextView) findViewById(R.id.birthday);TextView result = (TextView) findViewById(R.id.result);Intent intent = getIntent();Bundle bundle = intent.getExtras();Info info = (Info) bundle.getSerializable("info");birthday.setText("您的阳历生日是 " + info.getBirthday());result.setText(query(info.getBirthday()));}public String query(String birthday) {int month = 0;int day = 0;try {month = Integer.parseInt(birthday.substring(5, 7));day = Integer.parseInt(birthday.substring(8, 10));} catch (Exception e) {e.printStackTrace();}String name = ""; // 星座名称if (month > 0 && month < 13 && day > 0 && day < 32) {if ((month == 3 && day >= 21) || (month == 4 && day <= 20)) {name = "白羊座";} else if ((month == 4 && day >= 21) || (month == 5 && day <= 21)) {name = "金牛座";} else if ((month == 5 && day >= 22) || (month == 6 && day <= 21)) {name = "双子座";} else if ((month == 6 && day >= 22) || (month == 7 && day <= 22)) {name = "巨蟹座";} else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) {name = "狮子座";} else if ((month == 8 && day >= 23) || (month == 9 && day <= 23)) {name = "处女座";} else if ((month == 9 && day >= 24) || (month == 10 && day <= 23)) {name = "天秤座";} else if ((month == 10 && day >= 24) || (month == 11 && day <= 22)) {name = "天蝎座";} else if ((month == 11 && day >= 23) || (month == 12 && day <= 21)) {name = "射手座";} else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) {name = "摩羯座";} else if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) {name = "水瓶座";} else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) {name = "双鱼座";}} else {name = "无效生日";}return name;}}
步骤 7: 星座计算逻辑
  1. query 方法中实现真实的星座计算逻辑。
步骤 8: 在 AndroidManifest.xml 中注册Activity
  1. AndroidManifest.xml 中注册两个Activity。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android=""package="com.example.zodiaccalculator"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.ZodiacCalculator"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 注册ResultActivity --><activity android:name=".ResultActivity" /></application></manifest>
    
    步骤7:运行效果

    练习3.2 从一个Activity跳到另一个Activity再返回

    编写Android程序,实现带选择所在城市的用户注册。

    步骤 1: 创建项目和两个Activity
    1. 在 Android Studio 中创建一个新的 Android 项目,取名为 CityRegister

    2. CityRegister 项目中,创建两个Activity:

      • MainActivity 用于用户注册。
      • HeadActivity 用于选择所在城市。
    步骤 2: 设计布局文件

    activity_main.xml (用户注册界面)

    • 用于输入用户名、密码、确认密码、E-mail 地址以及显示选择的城市。

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android=""android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"android:paddingTop="20px"><TableLayoutandroid:id="@+id/tableLayout1"android:layout_width="match_parent"android:layout_height="wrap_content"><TableRowandroid:id="@+id/tableRow1"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="用户名: "android:textSize="60px" /><EditTextandroid:id="@+id/user"android:layout_width="wrap_content"android:layout_height="wrap_content"android:minWidth="400px" /></TableRow><TableRowandroid:id="@+id/tableRow2"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密码: "android:textSize="60px" /><EditTextandroid:id="@+id/pwd"android:layout_width="wrap_content"android:layout_height="wrap_content"android:inputType="textPassword" /></TableRow><TableRowandroid:id="@+id/tableRow3"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="确认密码: "android:textSize="60px" /><EditTextandroid:id="@+id/repwd"android:layout_width="wrap_content"android:layout_height="wrap_content"android:inputType="textPassword" /></TableRow><TableRowandroid:id="@+id/tableRow4"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="E-mail 地址: "android:textSize="60px" /><EditTextandroid:id="@+id/email"android:layout_width="wrap_content"android:layout_height="wrap_content" /></TableRow><TableRowandroid:id="@+id/tableRow5"android:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="选择所在城市"android:textSize="25dp" /><EditTextandroid:id="@+id/city"android:layout_width="wrap_content"android:layout_height="wrap_content" /></TableRow></TableLayout></LinearLayout>
      

    head.xml (选择城市界面)

    • 使用一个 GridView 显示可选择的城市列表。

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="" android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><GridView android:id="@+id/gridView1"android:layout_height="match_parent"android:layout_width="match_parent"android:layout_marginTop="10px"android:horizontalSpacing="3px"android:verticalSpacing="3px"android:numColumns="4"/></LinearLayout>
      
    步骤 3: 实现逻辑和事件处理

    MainActivity.java

    • 设置点击按钮跳转到 HeadActivity,并处理返回的城市信息。

      package com.example.cityregister;import android.app.Activity;
      import android.content.Intent;
      import android.os.Bundle;
      import android.view.View;
      import android.view.View.OnClickListener;import android.widget.Button;
      import android.widget.EditText;
      import android.widget.GridView;
      import android.widget.TextView;
      public class MainActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=(Button)findViewById(R.id.button1);    //获取选择头像按钮button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=newIntent(MainActivity.this,HeadActivity.class);startActivityForResult(intent, 0x11);    //启动 intent 对应的Activity}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(requestCode==0x11 && resultCode==0x11){ //判断是否为待处理 的结果Bundle bundle=data.getExtras();              //获取传递的数据包 String city=bundle.getString("city");    //获取选择的头像 IDString city=bundle.getString("city");TextView tv=(TextView)findViewById(R.id.city); //获取布局文件中添加的 ImageView 组件tv.setText(city);}}
      }
      

    HeadActivity.java

    • 使用 GridView 显示城市列表,点击城市后返回选择的城市。

      package com.example.cityregister;import android.app.Activity;
      import android.content.Intent;import android.os.Bundle;
      import android.view.View;
      import android.view.ViewGroup;
      import android.widget.AdapterView;
      import android.widget.AdapterView.OnItemClickListener;
      import android.widget.BaseAdapter;
      import android.widget.GridView;
      import android.widget.TextView;
      public class HeadActivity extends Activity {public String[] city = new String[] { "北京", "上海","广州","长春","沈阳"," 哈尔滨","天津","西安","杭州","深圳","南京","洛阳" };//  定义并初始化保存头像 id 的数组@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.head);        //设置该 Activity 使用的布局 GridView gridview = (GridView) findViewById(R.id.gridView1);GridView gridview=findViewById(R.id.gridView1);
      //  获取 GridView 组件BaseAdapter adapter=new BaseAdapter() {@Overridepublic View getView(int position, View convertView, ViewGroupparent) {TextView tv;                                          //声明 ImageView 的对象if(convertView==null){tv=new TextView(HeadActivity.this);              //实例化ImageView 的对象
      //                         /*************设置图像的宽度和高度******************/
      //                          imageview.setAdjustViewBounds(true);
      //                          imageview.setMaxWidth(158);
      //                          imageview.setMaxHeight(150);
      //                         /**************************************************/ tv.setPadding(5, 5, 5, 5);                    //设置 ImageView的内边距}else{tv=(TextView)convertView;}tv.setText(city[position]);              //为 ImageView 设置要显示的图片return tv; //返回 ImageView}/**  功能:获得当前选项的 ID*/@Overridepublic long getItemId(int position) {return position;}/**  功能:获得当前选项*/@Overridepublic Object getItem(int position) {return position;}/**  获得数量*/@Overridepublic int getCount() {return city.length;}};gridview.setAdapter(adapter);                                                    //  将适配器与 GridView 关联gridview.setOnItemClickListener(new OnItemClickListener() { @Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {Intent intent=getIntent(); //获取 Intent 对象Bundle bundle=new Bundle();        //实例化要传递的数据包 bundle.putString("city",city[position] );//  显示选中的图片  intent.putExtras(bundle);    //将数据包保存到 intent 中setResult(0x11,intent);        //设置返回的结果码,并返回调用该 Activity 的 Activityfinish();          //关闭当前 Activity}});}
      }
      
    步骤 4: 在 AndroidManifest.xml 中注册Activity
    • 注册 MainActivityHeadActivity

      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android=""package="com.example.cityregister"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.Design.NoActionBar"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".HeadActivity" ></activity></application>
      </manifest>
      
    步骤 5: 运行程序
    • 运行你的应用程序,测试用户注册界面和城市选择功能。

更多推荐

实验三:Intent与Activity的使用

本文发布于:2023-11-17 10:51:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1640830.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Intent   Activity

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!