简单问题

tt2com 2017-01-06 10:36:08

protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.secondlayout);
Button button2 = (Button) findViewById(R.id.button2);
Intent intent = getIntent(); // 1
String data = intent.getStringExtra("extra_data");
Log.d("dosecond", data);
button2.setOnClickListener(new OnClickListener(){
public void onClick(View v){
intent.putExtra("data_return", "hello firstActivity"); // 2
setResult(RESULT_OK,intent); // 3
finish();
}
});

在学习第一行代码中,我将书上的代码弄在一个,如上述代码1,2,3行中所示,
我在第2,3 中借用1的已经定义的变量将报错。
哪位可以帮忙解释一下,或许推荐一本相关的书籍
...全文
444 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tt2com 2017-01-09
  • 打赏
  • 举报
回复
引用 13 楼 omayyouhappy 的回复:
在onlick里面的话,相当于是一个内部类,要引用父类的变量,需要声明成final,这个机制应该是防止变量被修改,具体要来大神来说说了
估计问题太小白了,结贴了
tt2com 2017-01-09
  • 打赏
  • 举报
回复
引用 9 楼 Li_Jun__ 的回复:
真的理解成 1,2,3行了 setOnClickListener 在函数作用域内; 测试没有报错,能否将具体错误贴出来。
你没有报错吗?我这里直接就出错了。 学习代码,写的时候随意敲上去的,突然发现出错了,就想问问。
DynamicDING 2017-01-09
  • 打赏
  • 举报
回复
//这是用来接受的 Intent intent = getIntent(); // 1 String data = intent.getStringExtra("extra_data"); Log.d("dosecond", data); button2.setOnClickListener(new OnClickListener(){ public void onClick(View v){ // 改这里,发送需要new一块内存 Intent intent =new Intent(); intent.putExtra("data_return", "hello firstActivity"); // 2 setResult(RESULT_OK,intent); // 3 finish(); } });
清澈@Cherry 2017-01-08
  • 打赏
  • 举报
回复
在onlick里面的话,相当于是一个内部类,要引用父类的变量,需要声明成final,这个机制应该是防止变量被修改,具体要来大神来说说了
愚公要移山 2017-01-07
  • 打赏
  • 举报
回复
你定义成全局变量就好了,如果不知道作用域的问题,建议你找一本java书看一看
xhtl007 2017-01-07
  • 打赏
  • 举报
回复
Intent 定义完以后不需要new一个么 同是小白,你听听就好
R_ine 2017-01-06
  • 打赏
  • 举报
回复
是不是你还没运行,就报红色了吗。 如果是的话。就这样 final Intent intent = getIntent(); // 1
寒冰大神 2017-01-06
  • 打赏
  • 举报
回复
变量作用域问题 1 Intent 前面加个 final 或者 将 intent 声明为全局变量 final Intent intent = getIntent(); // 1
哎,真难 2017-01-06
  • 打赏
  • 举报
回复
findViewById(R.id.button2)没找到xml的里面id吧
tt2com 2017-01-06
  • 打赏
  • 举报
回复
引用 1 楼 R_ine 的回复:
报的错误是什么。
变量未定义啊
R_ine 2017-01-06
  • 打赏
  • 举报
回复
报的错误是什么。
草民一号 2017-01-06
  • 打赏
  • 举报
回复
onCreate只是一个方法,执行完了就退出了,但是在里面赋值 声明点击事件监听不会退出,也可以理解是异步的吧。 我实际也不是很懂
=10_01= 2017-01-06
  • 打赏
  • 举报
回复
真的理解成 1,2,3行了 setOnClickListener 在函数作用域内; 测试没有报错,能否将具体错误贴出来。
=10_01= 2017-01-06
  • 打赏
  • 举报
回复
推荐安卓官方出的入门指南(有些是中文): https://developer.android.google.cn/training/index.html
=10_01= 2017-01-06
  • 打赏
  • 举报
回复
onCreate 方法是重写自 Activity 类,看看有没有继承 Activity https://developer.android.google.cn/reference/android/app/Activity.html
tt2com 2017-01-06
  • 打赏
  • 举报
回复
引用 4 楼 qq_34364155 的回复:
变量作用域问题 1 Intent 前面加个 final 或者 将 intent 声明为全局变量 final Intent intent = getIntent(); // 1
我无java经验,依据c\c++的写法是不会报错的, 我想问就是作用域问题。 可否介绍一下onCreate 内的变量为什么在其内部中变成了无定义? button2.setOnClickListener这个函数不在其作用域内?

80,471

社区成员

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

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