0

注意点として、私はAndroidプログラミングにかなり慣れていないので、これらの行に沿った文字列配列宣言で問題が発生していました。

String[] title = {
"Abundance",
"Anxiety",
"Breakups",
"Bruxism"};

String[] name = {
"test1",
"test2",
"test3",
"test4"};

この変更を行ったときに問題が発生しました

String[] title = {
"Abundance",
"Anxiety",
"Breakups",
"Bruxism"};

String urlbase = "http://www.somewhere.com/data/";
String imgSel = "/logo.png";
String[] mStrings = new String[title.length];

for(int i=0;i<title.length;i++) {
    mStrings[i] = urlbase + title[i].toLowerCase() + imgSel;
    System.out.println(mStrings[i]);
}

次に、System.out行でこのエラーが発生しました

Syntax error on token ";", { expected after this token

メソッドがないものを見つけるまで、私や他の人を長い間混乱させていました。これまでのステートメントはすべて、クラス宣言で作成されていました。

***ここで何かを学びました

私は別の投稿でこれを見て、これを追加することであった彼らの解決策を試しました

public static void main(String[] args) {


}

私の「行動」の周りで、これは正しいことのように見え、理にかなっているので、私はそれを試しました。私がそれをしたとき、日食はネジを吹き飛ばしました、そして私はそれをコピーすることさえできない本当に奇妙な何かを私に与えませんが、それはコンソールウィンドウに表示されます

<terminated> MainActivity (1) [Java Application] /System/Library/Frameworks/JavaVM.framework/Version/1.4/Home/bin/java (Nov 3, 2012 9:47:42 PM)

悪い部分は、コードを消去してプロジェクトをクリーンアップしても同じエラーが発生し続けるため、コードは機能していたので、この変更を試してみると、機能が停止し、壊れたままのコードを削除することです。

質問は2つの部分で、これを修正するにはどうすればよいですか。また、メソッド内でアクションを実行できるようにするために必要な正確な構文は何ですか。

これが動作するはずの元のコードですが、上記のforループはコメントアウトされていません。これは実際には動作していましたが、これは私の変更ですが、最後に修正を試みたために実行されません。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;

public class MainActivity extends Activity {

ListView list;
LazyAdapter adapter;

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

    list=(ListView)findViewById(R.id.list);
    adapter=new LazyAdapter(this, mStrings);
    list.setAdapter(adapter);

    Button b=(Button)findViewById(R.id.button1);
    b.setOnClickListener(listener);
}

@Override
public void onDestroy()
{
    list.setAdapter(null);
    super.onDestroy();
}

public OnClickListener listener=new OnClickListener(){

    public void onClick(View arg0) {
        adapter.imageLoader.clearCache();
        adapter.notifyDataSetChanged();
    }
};    

String[] title = {
        "Abundance",
        "Anxiety",
        "Breakups",
        "Bruxism",
        "Decisions",
        "Zen"

};

 //I put my fix for the method issue here and eclipse blew up
 //I also uncommented the appropriate lines and commented out the mStrings declaration and
 //assignment



  //   String[] mStrings= new String[title.length];

 //   String urlbase = "http://somewhere.com/data/";
 //   String imgSel = "/logo.png";
 //   for(int i=0;i<title.length;i++){
 //     mStrings[i] =  urlbase + title[9].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel;
 //   }

    //String[] mStrings = new String[title.length];

    private String[] mStrings={
        "http://somewhere.com/data/abundance/logo.png",
        "http://somewhere.com/data/anxiety/logo.png",
        "http://somewhere.com/data/breakups/logo.png",
        "http://somewhere.com/data/bruxism/logo.png",
        "http://somewhere.com/data/decisions/logo.png",
        "http://somewhere.com/data/zen/logo.png"
    };   
}
4

1 に答える 1

1
public static void main(String[] args)

上記は基本的なJavaプログラムに属し、Androidには適していません。独自のアクティビティやその他のプログラムエントリポイントを処理します。

ほとんどすべてのコード、特に、、、などのステートメントはメソッド内にある必要があります。このコードは最初に実行されるため、内に配置できます。ifwhileforonCreate

基本的な考え方は次のとおりです。

public class MainActivity extends Activity {
    // List / Adapter variables here

    private String[] title = {
        "Abundance",
        "Anxiety",
        "Breakups",
        "Bruxism",
        "Decisions",
        "Zen"
    };

    private String[] mStrings = new String[title.length];

    // OnClickListener here

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // super.onCreate and setContentView

        // Here is your for loop, untouched!
        String urlbase = "http://somewhere.com/data/";
        String imgSel = "/logo.png";
        for(int i=0;i<title.length;i++){
            mStrings[i] =  urlbase + title[9].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel;
        }

        // More onCreate
    }

    // onDestroy method here
}
于 2012-11-04T06:43:30.773 に答える