簡體   English   中英

不能引用以不同方法定義的內部類中的非final變量 - 請幫助我,我是新手

[英]Cannot refer to a non-final variable inside an inner class defined in a different method- Please help me i am new at this

請幫我。 我正在嘗試構建一個簡單的應用程序,您可以從按鈕“aceptar”中單擊的微調器中選擇一個愛好,並將該字符串從該微調器返回到主活動。 我在變量“myspinner”中得到錯誤“不能引用在不同方法中定義的內部類中的非final變量”。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;

    public class ActivitySaludo extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_saludo);
        String myspinner;

        Intent intent = getIntent();
        String saludo = intent.getStringExtra(MainActivity.EXTRA_SALUDO);

        TextView txtCambiado = (TextView) findViewById(R.id.TxtSaludo);
        txtCambiado.setText(getString(R.string.hola_saludo) + " " + saludo);

        final Spinner spinner = (Spinner)findViewById(R.id.SpinnerSaludo);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.hobby, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new OnItemSelectedListener () {


            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int pos, long id) {
                parent.getItemAtPosition(pos);
                myspinner = spinner.getItemAtPosition(pos).toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                //another call

            }

        });

        final Button BtnAceptar=(Button) findViewById(R.id.buttonAceptar);
        BtnAceptar.setOnClickListener(new OnClickListener (){

            @Override
            public void onClick(View v) {
                Intent iboton = new Intent();   


            }

        });

    }

}
String myspinner

需要是final,你不能訪問接口內的非最終局部變量

所以你需要做的就是將String myspinner移出onCreate並使其成為一個類范圍的變量。 然后你不需要它是最終的

那是因為微調器在偵聽器外聲明。 您可以將微調器聲明為final或在偵聽器中聲明它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM