Android成长之路(2)——简单地使用Intent
来源:互联网 发布:网络创业的三个途径 编辑:程序博客网 时间:2024/06/05 08:59
接下来会在MainActivity里面添加代码,当按下一个Send按钮就可以开始一个新的activity
上一次已经写好了一个布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_main"> <EditText android:id="@+id/edit_message" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/edit_message"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send"/></LinearLayout>
按钮点击响应
现在,在res/layout目录下, 修改content_my.xml文件.
1、添加 android:onClick 属性到Button这个控件里.
res/layout/content_my.xml:
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage"/>
android:onClick属性的值是, “sendMessage”, 作为activity的一个函数的名字,当点击这个按钮系统就会调用这个方法。后面会再探讨onClick的几种用法。。。
2、打开 MainActivity.java
在MainActivity 类里,, 添加 sendMessage() 函数 .
/** Called when the user clicks the Send button */ public void sendMessage(View view){ //do something }
用这种方法来监听按钮的操作,有几个点要注意的:
1)、函数一定要是public
2)、return void
3)、只能有一个参数
注意要确保在MainAcitvity.java别写错了函数名字
创建一个Intent来启动一个新的Activity
首先,先创建一个新的Activity命名DisplayActivity
所有的Activity子类都要实现onCreate() 函数. 这个函数是一开始初始化Activity组件的地方,后面生命周期在详细了解一下。
选择好package, com.example.myapplication, 选择 New > Activity > Blank Activity.
Activity Name: DisplayMessageActivity
Layout Name: activity_display_message
Package name: com.mycompany.myfirstapp
创建好之后打开 DisplayMessageActivity.java 这个类已经包含了onCreate() 函数.
然后开始创建一个Intent
1、在MyActivity.java的sendMessage() 函数里面创建一个Intent来启动d DisplayMessageActivity
/** Called when the user clicks the Send button */ public void sendMessage(View view){ Intent intent = new Intent(MainActivity.this,DisplayActivity.class); }
这里传递了两个参数(Context,Class):
第一个参数,当前的Activity,传入类型是Context
第二个参数,想要启动的Activity,传入类型是Class
2、先在 MyActivity class 最上面添加 EXTRA_MESSAGE 的声明,然后在sendMessage()函数里面添加代码:
public class MainActivity extends AppCompatActivity { public final static String EXTRA_MESSAGE = "com.example.myapplication.MESSAGE"; ......}
/** Called when the user clicks the Send button */ public void sendMessage(View view){ Intent intent = new Intent(MainActivity.this,DisplayActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE,message); startActivity(intent); }
用 findViewById() 找到 EditText .
EditText输入的字符,用putExtra() 来把它添加到 intent 里面.
Intent 可以运输key-value的这种数据类型. 第一个参数是 key ,第二个参数是值 value
为了下一个activity 方便查找intent传过来的值, 应该使用包名作为前缀来定义key,并且用public来修饰,这样就确保了key是唯一的,不会跟其他的app弄混了
接收Intent
1、每一个Activity都可以通过Intent来启动,调用getIntent()来获取Intent里面装的内容
2、通过 getStringExtra() 函数来提取被传过来的数据.
Intent intent = getIntent();String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
显示消息
在 res/layout 目录下修改 content_display.xml .
1、添加 android:id 属性到 RelativeLayout. 因为Activity的代码需要通过id来找到这个layout .
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...... android:id="@+id/content"></RelativeLayout>
2、再回到DisPlayActivity.Java,在onCreate() 函数中, 创建一个TextView 对象.
设置 text size ,通过 setText()来设置显示的信息.
把TextView添加到前面定义好的RelativeLayout里面去.
TextView textView = new TextView(this);textView.setTextSize(40);textView.setText(message);RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);layout.addView(textView);
现在DisplayActivity.java的代码如下:
public class DisplayActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); getSupportActionBar().setDisplayHomeAsUpEnabled(true); //这里开始添加了相关的代码 Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); RelativeLayout layout = (RelativeLayout) findViewById(R.id.content); layout.addView(textView); }}
效果:
输入点击发送后
- Android成长之路(2)——简单地使用Intent
- 【Android成长之路】Intent初体验—使用Intent 在活动之间穿梭(一)
- Android成长之路(7)——关于隐式Intent的用法
- Android学习之简单地使用碎片
- Android菜鸟的成长笔记(8)——Intent与Intent Filter(上)
- Android菜鸟的成长笔记(9)——Intent与Intent Filter(下)
- Android菜鸟的成长笔记(8)——Intent与Intent Filter(上)
- Android菜鸟的成长笔记(8)——Intent与Intent Filter(上)
- Android菜鸟的成长笔记(9)——Intent与Intent Filter(下)
- Android技术成长之路(Fragment的简单介绍)
- Android成长之路-实现简单动画
- Android—Intent简单了解
- 【Android成长之路】最常用和最难用的控件——ListView的浅谈(ListView 的简单用法)
- Android成长之路(5)——了解Fragment
- Android初级学习之Intent的简单使用
- 笔记40 | Android通讯之Intent的简单使用
- Android之Intent简单理解
- Android Intent Filter简单使用
- Android Keystore获取MD5 SHA1 SHA256等信息
- [BZOJ2705][SDOI2012]Longge的问题
- 如何在Linux中发现IP地址冲突
- 我的博客是如何搭建的(github pages + HEXO + 域名绑定)
- C++隐式转换与显式转换
- Android成长之路(2)——简单地使用Intent
- 关于如何提高sql语句执行效率(网上整理)
- hdu-1428 漫步校园(BFS+记忆化搜索)
- 反射机制总结
- CentOS 服务器安全设置
- Unity编程笔录--Unity中Microphone类进行录音保存
- setsockopt
- 设计思想之复合应该优于继承
- 学习理论-模型选择-3-模型训练规则、特征选择