PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
java
[问题] CallBack Listener 问题请教
楼主:
lihohsin
(新)
2021-12-03 19:21:26
小弟在学习callback listener
参考这个
https://guides.codepath.com/android/Creating-Custom-Listeners#3-implement-listener-callback
练习的代码如下
MainActivity2.java
public class MainActivity2 extends AppCompatActivity {
Button button2;
TextView textView2;
DataListener listener;
public MainActivity2(){
this.listener=null;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
button2=findViewById(R.id.button2);
textView2=findViewById(R.id.textView2);
textView2.setText(String.valueOf(listener.getData()));
}
public interface DataListener{
int getData();
}
public void setDataListener(DataListener listener){
this.listener = listener;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
Button button;
private int x=5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button =findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i =new Intent();
i.setClass(MainActivity.this,MainActivity2.class);
startActivity(i);
finish();
}
});
MainActivity2 mainActivity2=new MainActivity2();
mainActivity2.setDataListener(new MainActivity2.DataListener() {
@Override
public int getData() {
return x;
}
});
}
}
目标只是想要让MainActivity2抓到 MainActivity中的x=5
可是执行之后
Caused by: java.lang.NullPointerException: Attempt to invoke interface method
'int bestfood.today.callbackdemo.MainActivity2$DataListner.getData()' on a
null object reference
总是报这行错误
常是几种写法
都报这个错误
有没有高手知道这个callback listener是哪里写错了?
作者:
ssccg
(23)
2021-12-04 01:36:00
i.setClass(MainActivity.this,MainActivity2.class);startActivity(i); 这两行启动的MainActivity2是系统产生的,跟你下面写的MainActivity2 mainActivity2=new MainActivity2();是完全不同的MainActivity2的instance,你在你自己new的instance设listener对系统启动的instance没有意义原则上Activity间不能用自订listener,最开始的想法就错了会有这种问题可能对Android四大元件生命周期的概念还不清楚instance是系统/框架管的不能自己new这点以后你一定还会在很多地方碰到
作者:
aiweisen
(艾维森)
2021-12-17 06:45:00
方向错了 你两个都是activity 要做的应该是 如何透过activity 传递资料你要在 new intent 那边put你的x值 然后在activity那边透过intent get 你的x值
https://tinyurl.com/2p855y95
暴力一点的方式就是直接把x 在 activityA设成static 就可直接在activityB直接读x值
继续阅读
[问题] 为何补习班比较多推荐java?
c4658860
关于@EqualsAndHashCode
JJYEN
Re: [问题] 从数据库查询出结果后,如何把结果存起来
pupuliao
[问题] 从数据库查询的结果,要在jsp页面分页
lueichun
[问题] 从数据库查询出结果后,如何把结果存起来
lueichun
[问题]请问线上JAVA编辑器为什么这样的语法不行
chiang0514
[问题] 教儿童从零学Java的书/教材
boogieman
[语法] {{;}}意思
Nomadismo
Fw: [心得] Java perf profiling 分享
alihue
[问题] Connect前先用Socket测试
rexhuang
Links
booklink
Contact Us: admin [ a t ] ucptt.com