启动其他的Activity
启动其他的Activity
jiejiecool 发表于3年前
启动其他的Activity
  • 发表于 3年前
  • 阅读 48
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

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

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()函数删掉了,哎,这样的脑残错误耽误了好多时间。

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

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 3
博文 27
码字总数 8397
×
jiejiecool
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: