1

ですから、私は人生でJavaプログラミングに触れたことがありません(少しCとC ++をしましたが、何も覚えていません)が、私は物事を理解しようとしています。ボタンがクリックされたときに配列からランダムな文字列を表示するAndroidアプリを作成しようとしています。これまで、あちこちからフラグメントをコピーしてきました。しかし、OnClickListenerで問題が発生しています。

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(new onClickListner(){})はタイプButtonに対して未定義です
2)onClickListenerをタイプに解決でき
ません3)非最終変数を参照できません別のメソッドで定義された内部クラス内のtv4
)構文エラー

最初の2つは同じ行にあります。btnClick.setonclickListener(new onClickListner(){。
3つ目はtv.setText(q)にあり
、4つ目は});にあります。

最初の3つを解決すると4つ目が解決すると思います。Javaの知識がなく、まだプログラムを作成しようとしている人を助けてくれる人がいたら、どこで失敗したのか、そして将来失敗しないようにする方法を教えてください。よろしくお願いします。

4

2 に答える 2

2

1)メソッドsetonclickListener(new onClickListner(){})は、タイプButtonに対して未定義です。

はい、そうです。あなたが探しているメソッドはと呼ばれsetOnClickListenerます。

2)onClickListenerをタイプに解決できません

お探しのタイプはですOnClickListener。あなたは小文字を書いただけでなくo、あなたも見逃しましeた。

3)別のメソッドで定義された内部クラス内の非最終変数tvを参照することはできません

これがJavaの仕組みです。tv匿名内でsayにアクセスする場合はOnClickListener、を宣言しfinal TextView tvます。

4)構文エラー

のメソッドOnClickListenerはと呼ばれることになっていますonClick

于 2012-12-30T23:36:07.860 に答える
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. final TextView tv迷惑なクラス内でアクセスされるため、TextViewをfinalとして定義する必要があります。
  4. この方法onCreateには、正しい開閉中括弧がありません。メソッド本体を閉じるには、}の後に余分なものを置きます。});

Eclipseを使用している場合は、CTRL+Spaceを実行できます。これにより、いくつかのオートコンプリートオプションが提供され、大文字と小文字の区別とスペルに役立ちます。

于 2012-12-30T23:40:21.277 に答える