在内部类中访问变量。需要宣布为最终

因此标题说明了一切。我的内出现编译错误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);


}


慕森卡
浏览 412回答 3
3回答

RISEBY

如果您不想使其最终确定,则始终可以将其设为全局变量。

桃花长相依

这是一个有趣的答案。您可以声明一个最终的单元素数组,然后显然可以更改数组的所有元素。我敢肯定,这完全打破了最初实施此编译器规则的原因,但是当您像今天一样处于时间限制时,这非常方便。我实际上不能为此索赔。这是IntelliJ的推荐!感觉有点。但是它看起来不像全局变量那么糟糕,因此我认为在这里值得一提。这只是解决问题的一种方法。不一定是最好的。final int[] tapCount = {0};addSiteButton.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {       tapCount[0]++;    }});
打开App,查看更多内容
随时随地看视频慕课网APP