0

我的微調控件的onItemSelected函數無法識別活動中的變量(聲明爲final)。我有onClickListener函數在同一個活動的按鈕識別這些相同的變量。Android onItemSelected函數無法識別實例變量

下面是一些代碼:

public class Currency extends Activity implements OnItemSelectedListener{ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_currency); 
    final TextView tv2 = (TextView) findViewById(R.id.textView2); 
    final TextView tv3 = (TextView) findViewById(R.id.textView3); 

} 

@Override 
public void onItemSelected(AdapterView<?> arg0, View v, int position, 
     long arg3) { 
    switch (position) { 
    case 0: 
     tv2.setText("something"); 
     tv3.setText("something"); 
     break; 
    case 1: 
     tv2.setText("something"); 
     tv3.setText("something"); 
    case 2: 
     tv2.setText("something"); 
     tv3.setText("something"); 
     break; 

     default: 
     break; 
    } 

} 

的(靠近每一行)錯誤:「TV2無法解析」在類級

+0

你的括號真的不匹配。你確定代碼在課堂上嗎? –

+0

該代碼約2頁長,所以這是高度編輯這篇文章:)但是,它是在課堂上。 – LMVogel

+1

他們不在同一個上下文中。您的文字瀏覽是在onCreate中聲明的。通過實例變量讓他們成爲實例字段 – njzk2

回答

1

聲明TV2等下方。從的onCreate

刪除聲明
private TextView tv2 

您的代碼必須看起來像下面的代碼

public class Currency extends Activity implements OnItemSelectedListener{ 
private TextView tv2; 
private TextView tv3; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_currency); 
    tv2 = (TextView) findViewById(R.id.textView2); 
    tv3 = (TextView) findViewById(R.id.textView3); 

} 


@Override 
public void onItemSelected(AdapterView<?> arg0, View v, int position, 
     long arg3) { 
    switch (position) { 
    case 0: 
     tv2.setText("something"); 
     tv3.setText("something"); 
     break; 
    case 1: 
     tv2.setText("something"); 
     tv3.setText("something"); 
    case 2: 
     tv2.setText("something"); 
     tv3.setText("something"); 
     break; 

     default: 
     break; 
    } 

} 
+0

感謝您的詳細解答,@ njzk2幫助我解決了上述問題。 – LMVogel

+0

哦,好的。沒有問題。我首先看到了這一點。 – AAnkit