错误显示:“The final local variable timeString cannot be assigned, since it is defined in an enclosing type“,会是什么原因

剑麟 发布于 2013/04/15 22:53
阅读 16K+
收藏 1

错误显示:“The final local variable timeString cannot be assigned, since it is defined in an enclosing type”

这是我的代码:

/**
	 * 监听Dialog中两个 Spinner的点击事件
	 * @param timeSpinner 时间Spinner
	 * @param categorySpinner 类别Spinner
	 */
	public void spinnerListener(final Spinner timeSpinner, final Spinner categorySpinner){
		//所选择的时间
		final String timeString;
		//所选择的类别
		String categoryString;
		
		//时间Spinner 选择事件监听
		timeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				timeString = arg0.getItemAtPosition(arg2).toString();
				
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
		});

		//类别Spinner 选择事件监听
		categorySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				//categoryString = arg0.getItemAtPosition(arg2).toString();
				
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
		});
	}
好奇怪,从来没遇到这样的错误,希望好心的网友可以提点一下。

多谢了!

加载中
0
剑麟
剑麟

没人知道是什么原因吗?

@叶的旺旺、@鉴客

超级地图鱼T-X2006
超级地图鱼T-X2006
咋解决的呢?
0
dodola
dodola

final String timeString;

这个写成final了

剑麟
剑麟
回复 @dodola : 哦,是哦,问题终于解决了。太感谢了!再次说声:“谢谢!”
dodola
dodola
回复 @剑麟 : 哦,你要传出来,将timeString作为当前类的一个属性就可以了
剑麟
剑麟
回复 @dodola : 可是如果写进这方法里,那我怎样传出这个String来?
dodola
dodola
回复 @剑麟 : 把String timeString;写在new OnItemSelectedListener 里
剑麟
剑麟
可是如果我不写成final型,就出现这样的错误:“Cannot refer to a non-final variable timeString inside an inner class defined in a different method”
0
joleen
joleen

把 final String timeString;改为final String timeString[] = {null};

下面的timeString均改成timeString[0]

返回顶部
顶部