求帮忙解决,我想进行页面跳转,在第一遍无返回值的跳转能够顺利完成,但是,加了一个有返回值的Activity之后程序一点击按钮就停止运行了,

zhang_mx_mx 2017-09-23 09:57:02
运行界面


停止运行



第一个Activity
package com.example.demointent;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class FirstActivity extends Activity {
private Button bt1;
private Button bt2;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
/*
* 通过点击bt1实现页面之间的跳转
* 1.startActivity的方法来实现
*/
bt1 = (Button) findViewById(R.id.button1_first);
/*
* 通过点击bt2实现页面有返回值的跳转
* 2.startActivityForresult方法
*/
bt2 = (Button) findViewById(R.id.button2_first);
tv = (TextView) findViewById(R.id.textView1);
// 注册点击事件,按钮对象.setOnClickListener方法(new OnClickListener())---->导包
bt1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
/*
* Intent一个intent对象,
* 参数解释:
* PackageContext:上下文对象(1.直接FirstActivity.this 2.初始化全局变量Private Context=mcontext;-->赋值mcontext=this;-->参数mcontext.this)
* cls:目标文件,要跳转的目标
*/
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
}
});

//注册点击事件
bt2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
//intent对象;requestCode:请求码
}
});

}
/*
* onActivityResult方法
* requestCode:请求码,通过请求码确定主页面请求访问哪个页面,
* resultCode:返回码,通过返回码确定哪个页面返回给主页面数据
* data:页面返回的数据
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1 && resultCode == 2){
String content = data.getStringExtra("data");//判断请求码和返回码,得到返回数据
tv.setText(content);//文本框设置文本
}

}

}


第二个activity
package com.example.demointent;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SecondActivity extends Activity {
private Button bt;
private String content="我是SecondActivity返回的值";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
bt.findViewById(R.id.button1_second);
bt.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent data = new Intent();//不需指定目标了
data.putExtra("data", content);
setResult(2, data);
finish();
/*
* 参数解释:
* data.putExtra:Intent放数据的
* name,value
* 同Java中map集合类似,也是通过key和value值保存数据的
*
* setResult:
* resultCode返回码
* data:回传的数据
*
* 总结:在监听事件中,Intent一个对象data,用于表明当前界面的意图,连接两个界面;
* 为当前的data对象储存返回的数据name为data,value为字符串变量content
* 设置返回参数,返回码2,返回数据-->data对象
* 结束页面
*/
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.second, menu);
return true;
}

}


第一个xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FirstActivity" >

<TextView
android:id="@+id/textView1"
android:textSize="20sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:text="将第二页面回传的数据显示出来" />

<Button
android:id="@+id/button1_first"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:text="无返回值方式启动" />

<Button
android:id="@+id/button2_first"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1_first"
android:layout_below="@+id/button1_first"
android:text="有返回值方式启动" />

</RelativeLayout>



第二个xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SecondActivity" >

<Button
android:id="@+id/button1_second"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击以返回并关闭此页面" />

</RelativeLayout>


mainfest


logcat

...全文
777 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shengshengBoom 2017-09-26
  • 打赏
  • 举报
回复
是因为你SecondActivity的bt没有findById,是 = ,不是点,所以报了NUll
寒冰大神 2017-09-26
  • 打赏
  • 举报
回复
bt = (Button)findViewById(R.id.button1_second);

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧