0

The Complete Idiots Guide to Android App Development を使用して開始します。私はこの本を読んでいて、理解できない問題に出くわしました。アプリに検索機能を追加するための検索クラスを作成しています。Eclipse で複数のエラーが発生していますが、最もよくわからないのは、「構文エラーです。「}」を挿入して ClassBody を完成させてください」です。Eclipse がクラス本体を閉じるように指示していることは理解していますが、閉じられています。それを閉じるように言っている場所ではありません。閉じるように指示されている場所の下には、別の方法で入力できます。

これがクラス全体のコードです。

package com.recipesapp;
import java.util.ArrayList;
import android.app.ListActivity;
import android.app.SearchManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.ListView;

public class RecipeSearch extends ListActivity{

    @Override

    public void onCreate(Bundle savedInstanceState){

        //super.onCreate(savedInstanceState);
        setContentView(R.layout.recipe_list);
        Intent intent = getIntent();
        if(Intent.ACTION_VIEW.equals(intent.getAction())){
            //A search suggestion was clicked
            Intent recipeIntent = new Intent(this, RecipeEntry.class);
            recipeIntent.setData( intent.getData() );
            startActivity(recipeIntent);
            finish();
        }
        else if(Intent.ACTION_SEARCH.equals(intent.getAction())){
            //The search was executed
            String query = intent.getStringExtra(SearchManager.QUERY);
            showRecipes(query);
        }
    }


    private static final ArrayList<String> _RecipeSearchResults = new ArrayList<String>();
    private ListView resultsView;

    private void showRecipes(query){
        SharedPreferences recipeNames = getSharedPreferences(MainMenu.RecipeNamesPref, RecipeEntry.MODE_WORLD_READABLE);
        String[] recipeList= recipeNames.getString(MainMenu.RecipeNamesPref, null).split(",");
        for(String recipe: recipeList){
            if(recipe.contains(query))
                ReicpeSearchResults.add(recipe);

            resultsView=(ListView) findViewById(android.R.id.list);
            resultsView.setAdapter(new ListViewAdapter(this));
            resultsView.setTextFilterEnabled(true);
            resultsView.setOnItemClickListener(this);
        }
    }
}   

他にもエラーがあることは知っていますが、これを理解することはできません。私はすべての中括弧を開いて閉じていることを確認しました。35行目に入れたい理由がわかりません。これは次のとおりです。

private ListView resultsView;

また、最後の中括弧も削除する必要があります。助けていただければ幸いです。

4

4 に答える 4

2

これは中括弧の問題ではありません。メソッド パラメーターの型がありませんでした

メソッドのパラメーターには型が必要です

これを変える

showRecipes(query)

これ

showRecipes(String query)
于 2013-04-02T06:16:31.383 に答える
0
private static final ArrayList<String> _RecipeSearchResults = new ArrayList<String>();
    private ListView resultsView;

上記の 2 行はどちらも、OnCreate 実際に記述している場所の前に来るはずです。その場所では、すべての行が何らかのメソッド内にあるはずです。

@Override

    public void onCreate(Bundle savedInstanceState){

        //super.onCreate(savedInstanceState);
        setContentView(R.layout.recipe_list);
        Intent intent = getIntent();
        if(Intent.ACTION_VIEW.equals(intent.getAction())){
            //A search suggestion was clicked
            Intent recipeIntent = new Intent(this, RecipeEntry.class);
            recipeIntent.setData( intent.getData() );
            startActivity(recipeIntent);
            finish();
        }
        else if(Intent.ACTION_SEARCH.equals(intent.getAction())){
            //The search was executed
            String query = intent.getStringExtra(SearchManager.QUERY);
            showRecipes(query);
        }

この場合、ここで"query"言うパラメーターのデータ型を定義することになっています。String

private void showRecipes(String query){
    SharedPreferences recipeNames = getSharedPreferences(MainMenu.RecipeNamesPref, RecipeEntry.MODE_WORLD_READABLE);
    String[] recipeList= recipeNames.getString(MainMenu.RecipeNamesPref, null).split(",");
    for(String recipe: recipeList){
        if(recipe.contains(query))
            ReicpeSearchResults.add(recipe);

        resultsView=(ListView) findViewById(android.R.id.list);
        resultsView.setAdapter(new ListViewAdapter(this));
        resultsView.setTextFilterEnabled(true);
        resultsView.setOnItemClickListener(this);
    }
}
于 2013-04-02T06:27:29.983 に答える
0

メソッド private void showRecipes(query)にデータ型が含まれていないため、エラーが表示されています。

このように変更すると、 エラーが表示されprivate void showRecipes(String query)なくなり}ます。

于 2013-04-02T06:21:32.063 に答える
0

onCreate 関数の前に次の行を移動するだけです

private ListView resultsView;
于 2013-04-02T06:21:39.517 に答える