android怎么把监听类不写成内部类的形式,用外部类。

之后调用的时候直接setOnClickListener(new这个外部类),这样可能访问不了里面的私有成员变量了,这点你们怎么看?... 之后调用的时候直接setOnClickListener(new 这个外部类),这样可能访问不了里面的私有成员变量了,这点你们怎么看? 展开
 我来答
qing_85815
2012-10-17 · TA获得超过118个赞
知道答主
回答量:167
采纳率:0%
帮助的人:88.7万
展开全部
setOnClickListener(new MyClickListener(参数...));把私有成员变量当作参数传递进去。

OnClickListener本身是一个接口,要实现Onclick方法,如果你多个view有同样的onClick操作,当然是可以把他写成外部类。 但是 一般情况下我们各自的view有各自不同的操作和跳转,而且在MVC模式中Listener本身作为controller也不应该做model的操作,所以正常编写程序这里并不会做什么跳转之外的操作,如果在onClick方法里如果有了共同的计算,是不是该考虑自己程序的流程是不是需要改进。如果只是在方法之前需要一定的流程判定,可以写一个静态的方法出来,在需要判断的onClick事件之前去调用。
追问
我反编译许多项目的源码,看到Adapter,Thread,Handler,AsyncTask,Listener这些都没写在内部类中,这样可以让activity类的代码看起来不那么臃肿,但是它们这样做是怎么做到使用原类的私有成员变量的呢?
追答
反编译后你看到的是MainActivity$MyClickListener.java   这种格式的吧, 这个就是内部类啊。说明这个MyClickListener是MainActivity的内部类,这个是通过.class文件反编译回来的。java在编译为class的时候回把内部类拿出来生成单个的.class文件,所以你反编译后看到的就是分开的。
很明确的告诉你:写成外部类是不可能访问私有成员变量的。
绝耳一玩孩15
2012-10-17 · TA获得超过119个赞
知道答主
回答量:63
采纳率:0%
帮助的人:40.5万
展开全部
package com.joyvision.ld.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class test extends Activity implements OnClickListener {
public Button but;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.but = (Button)findViewById(R.id.bt_download);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.bt_download :
Toast.makeText(test.this, "bt_download", Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(test.this, "没有指定该按钮", Toast.LENGTH_LONG).show();
break;
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暗灵
2012-10-17
知道答主
回答量:9
采纳率:0%
帮助的人:11.6万
展开全部
大人!在我看来~

自定义一个类,实现OnClickListener接口。

然后将这个类的对象填入setOnclickListener()即可~
追问
我反编译许多项目的源码,看到Adapter,Thread,Handler,AsyncTask,Listener这些都没写在内部类中,这样可以让activity类的代码看起来不那么臃肿,但是它们这样做是怎么做到使用原类的私有成员变量的呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
人间尚有来处cP
2012-10-17
知道答主
回答量:9
采纳率:0%
帮助的人:8.6万
展开全部
你也可以直接把activity实现OnClickListener接口,这样在设监听器时setOnClickListener(this)就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式