2012-12-30 50 views
1

所以,我從來沒有碰過我的生活中的Java編程(做了一點C和C++,不記得任何東西),但我試圖弄清楚事情的真相。我試圖讓一個Android應用程序在單擊按鈕時顯示數組中的隨機字符串。到目前爲止,我一直在複製從這裏到那裏的片段。但是我遇到了OnClickListener的問題。Noob有多個Android問題

package com.example.testrun01; 

import java.util.Random; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.content.res.Resources; 
import android.widget.TextView; 
import android.widget.Button; 
import android.view.View; 
import android.view.View.OnClickListener; 


public class MainActivity extends Activity implements OnClickListener { 

    private String[] PhraseString; 
    private static final Random rgenerator = new Random(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TextView tv = (TextView) findViewById(R.id.textView1); 
    Button btnClick = (Button) findViewById(R.id.btnClick); 

    btnClick.setonclickListener(new onClickListner(){ 
     public void onclick() 
{ 
    PhraseString = getResources().getStringArray(R.array.Phrases); 
    String q = PhraseString[rgenerator.nextInt(PhraseString.length)]; 
    tv.setText(q); 
} 
     });  

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 
@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

} 

} 

讓我分解錯誤(總共4):
1)的方法,setonclickListener(新onClickListner(){})是未定義的類型按鈕
2)onClickListener不能被解析到一個型
3)可以指的不是一個非最終變量TV在一個不同的方法中定義的內部類內部
4)語法錯誤

前兩個是在同一直線上,btnClick.setonclickListener(新onClickListner() {。
第三個是在tv.setText(q);
第四個是}};

我猜前三位的決議將解決第四。如果有人願意幫助那些不瞭解Java並且仍在嘗試編寫程序的人,請告訴我哪裏出了問題,以及如何確保我未來不會出錯。提前感謝大家。

+3

簡答:大寫和拼寫問題。 – Sam

+0

謝謝!似乎上午5點30分不是在沒有預先知識的情況下潛入Java的最佳時間......感謝您幫助我解決問題 – Kade

回答

1

試試這個:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final TextView tv = (TextView) findViewById(R.id.textView1); 
    Button btnClick = (Button) findViewById(R.id.btnClick); 

    btnClick.setOnClickListener(new OnClickListner() { 

     public void onClick(View v) { 
      PhraseString = getResources().getStringArray(R.array.Phrases); 
      String q = PhraseString[rgenerator.nextInt(PhraseString.length)]; 
      tv.setText(q); 
     } 

    }); 
} 

記住要檢查大寫字母和字母無緣。

  1. 該方法是setOnClickListener而不是setonclicklistener
  2. 收聽者接口是OnClickListener而不是onClickListener
  3. 您需要將TextView定義爲final,final TextView tv,因爲它是在惱人的類中進行訪問的。
  4. 方法onCreate沒有正確的開啓和關閉支撐。在});之後放置一個額外的}關閉方法體。

如果你使用Eclipse,你可以做CTRL + Space這將爲您提供一些自動完成選項,它可以用大寫和拼寫幫助。

+0

仍然收到錯誤1,2和4 ...我檢查了我的大小寫,並確保我沒有錯過任何信件...我一直在看到很多問題同樣的問題,但他們似乎都得到了解決,而我的沒有...我錯過了一個進口或什麼? – Kade

+0

看起來您確實擁有正確的導入,但如果您使用的是IDE(例如Eclipse),它是否會提供任何自動修復,如果您將鼠標懸停在代碼行上? –

+0

我使用的是Eclipse,而且它不是...... K-Ballo,你幫我解決了前3個錯誤......不知道第四個卡在哪裏...... – Kade

2

1)的方法,setonclickListener(新onClickListner(){})是未定義的類型按鈕

是的,這是。您正在查找的方法稱爲setOnClickListener

2)onClickListener不能被解析爲一個類型

你正在尋找的類型是OnClickListener。不僅你寫了小寫字母o,還錯過了e

3)不能指非最終變量電視不同的方法

定義的內部類這只是方式的Java作品裏面。如果您想在匿名OnClickListener內訪問tv,請聲明final TextView tv

4)語法錯誤

OnClickListener的方法應該被調用onClick

+0

謝謝!看來我錯過了那個「e」......現在剩下錯誤4 ... – Kade

+0

最後一個,}); ... – Kade

+0

你還沒有關閉'onCreate(){'方法。在'});'之後的行上添加一個'}'。使用適當的縮進將幫助您可視化當您忘記關閉這樣的事情。 :) – Sam