我在我的onClick
中得到了一个编译错误。
这是代码。
public class fieldsActivity extends Activity {
Button addSiteButton;
Button cancelButton;
Button signInButton;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// to create a custom title bar for activity window
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.fields);
// use custom layout title bar
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.topbar);
Pager adapter = new Pager();
ViewPager mPager = (ViewPager) findViewById(R.id.fieldspager);
mPager.setAdapter(adapter);
mPager.setCurrentItem(1);
addSiteButton = (Button) findViewById(R.id.addSiteButton);
addSiteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPager.setCurrentItem(2, true); //Compilation error happens here.
}
});
cancelButton = (Button) findViewById(R.id.cancel_button);
signInButton = (Button) findViewById(R.id.sign_in_button);
}
发布于 2015-04-25 01:15:29
如果您不想让它成为最终变量,您可以始终将其设置为全局变量。
发布于 2016-02-05 01:39:41
您可以将变量声明为final,或者使其成为实例(或全局)变量。如果你声明它是最终的,你将不能在以后改变它。
在方法中定义并由匿名内部类访问的任何变量都必须是final。否则,您可以在内部类中使用该变量,而不知道如果该变量在内部类中更改,然后在封闭范围中使用它,则在内部类中所做的更改不会持久保留在封闭范围中。基本上,在内部类中发生的事情停留在内部类中。
我写了一个更多的in-depth explanation here。它还解释了为什么实例和全局变量不需要声明为final。
发布于 2013-01-20 23:05:36
错误说明了一切,请更改:
ViewPager mPager = (ViewPager) findViewById(R.id.fieldspager);
至
final ViewPager mPager = (ViewPager) findViewById(R.id.fieldspager);
https://stackoverflow.com/questions/14425826
复制相似问题