android中参数传递的问题

其实是个Java的参数传递问题,publicclassResult1extendsActivity//最外面的类{stringresult=....;....classC... 其实是个Java的参数传递问题,
public class Result1 extends Activity //最外面的类
{
string result = ....;
....
class CopyListener implements OnClickListener //监听器类
{
public void onClick(View v)
{
setClipboard(result);//这里有错,它好像不能识别外面的result变量。怎么把result传递进监听器?
}
}
}
string result = ...;在Result1类的onCreate()方法里面
展开
 我来答
阿凉的必杀技
2013-01-28 · TA获得超过112个赞
知道答主
回答量:61
采纳率:0%
帮助的人:29.9万
展开全部
应该是可以识别的吧,你定义的result是个成员变量来的,内部类是可以访问外部类的成员变量的啊,除非你的内部类是在一个方法里,而要访问的变量是方法的局部变量。
如果是这样,内部类是只能访问方法中的final变量的,因为如果这个方法栈结束了,result这个变量肯定会消失,可是内部类
还可能存在在堆中,因为可能没那么快被回收,这个时候,也就是说它有可能会去访问一个变量result,可是这个变量result却是早已经被清除了的,这是肯定不行的。 所以,要么把result定义成final的。
追问
String result 在 最外面的类的onCreate()方法里面;监听器类不在方法里
追答
额,这个样子的话,果断是不行的,因为result是onCreate方法的局部变量,只在onCreate方法里被创建,这个方法结束出栈就被销毁,写在方法外的监听器类是肯定获取不到这个值的,建议把result定义为成员变量,如果有必要的话。
郝子琪
2013-01-27 · TA获得超过1746个赞
知道大有可为答主
回答量:1579
采纳率:0%
帮助的人:1478万
展开全部
把string result定义为final类型的。即final String result=";
---------------------------------------------------------------------
更多疑问解答,尽在@安卓互助平台 新浪微博
更多追问追答
追问
public void onClick(View v) 
{
setClipboard(result);
}
这个函数里面需要重新初始化result,不然有错(仍然找不到result的来源)
追答
函数里重新初始化,那你在外面定义个鸟?!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangfeilong8
2013-01-28 · 超过53用户采纳过TA的回答
知道答主
回答量:225
采纳率:100%
帮助的人:140万
展开全部
完全可以的啊,你可能是把 String result 定义在onCreate()方法里面了吧,一定要把String result 定义成Result1 类的全局变量,这样就可以在Result1 类的任何地方使用了啊。
希望能帮助你。
追问
是的,是在onCreate()里面,怎么定义成全局变量啊,写成“final String result = ...”之后,setClipboard(result);还是不能识别result参数。
追答
建议把一些java基本语法和感念弄清楚,这可以让你以后的开发少走很多弯路的。例如你这个问题,就是java全局变量和局部变量的问题。希望对你有帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Dark900110
2013-01-27
知道答主
回答量:16
采纳率:0%
帮助的人:4135
展开全部
加个final 试试吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式