启动其他的Activity

接着上一篇博客,我们接受来自文本框的内容,按按钮并将内容发送,然后另外一个页面会显示我刚才输入的内容

step1:

先给button加上监听事件 ,onClick


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/send"
    android:onClick="sendMessage" />

当点击按钮时,就会调用MainActivity中的sendMessage方法

step2:

写sendMessage方法

//方法必须是public void 并且参数为唯一的view
public void sendMessage(View view){
    Intent intent=new Intent(this, DisplayMessageActivity.class);
    //将view赋值给edittext
    EditText editText=(EditText) findViewById(R.id.edit_messsage);
    //得到edittext的值
    String message=editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    //启动第二个activity
    startActivity(intent);
}
在这个方法中有几个地方需要注意,首先,方法必须是public void类型,并且参数唯一必须是View类型的参数
 
代码中含有Intent,Intent在英文中是企图,意图的意思,放在android中是提供两个activity连接的对象,代表一个应用(可以是activity)想要干什么,大部分时候被用来启动另一个activity。
 
Intent构造函数有两个参数,第一个是Context,在这里我们用this,代表当前的activity,第二个参数是想要传递Intent的应用组件的class对象,我们这里是DisplayMessageActivity.class,我们使用DisplayMessageActivity来显示我们输入的字母。
 
由于之前我们定义了,EditText的id为edit_message,所以这里使用findViewById得到R.java文件中的EditText并赋值
然后将输入的值放在自己定义的EXTRA_MESSAGE这个public的变量中,然后启动另一个activity
step3:
写第二个activity
右键,新建activity文件,名字为DisplayMessageActivity,可以看到里面有很多override函数,里面有oncreate()函数
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Get message from intent
        Intent intent=getIntent();
        String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        //Create textview
        TextView textView=new TextView(this);
        textView.setTextSize(40);
        textView.setText(message.toString());
        //set the textview as the activity layout
        setContentView(textView);
    }

我们把原来的代码删掉,得到Intent实例—>得到message—>新建TextView,设置大小—>设置TextView的值—>setContentView(textView)。
然后我们启动应用
image               image

上面的是一帆风顺的结果,但是对于刚入门的我来说调试出结果还花了挺久的时间。

这是一开始报错:

image

通过调试发现sendMessage方法能进入,并且变量的值也能获得,所以很困惑,应该是缓存的问题。

继续尝试应用,报这个错误:

unable to start activity componentInfo

我调试过程中,第一个activity是没有问题的,editText的值能获得,所以问题出在第二个activity上,

结果一查代码是onCreate()中我把一开始super.onCreate()函数删掉了,哎,这样的脑残错误耽误了好多时间。

好了,这个尝试就结束了。

转载于:https://my.oschina.net/u/2275839/blog/378796

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值