0

Android用のシンプルなレシピホルダーアプリを開発しています。私はAndroidプログラミングが初めてです。2 つのアクティビティがあります。1 つ目は検索変数をチェックして入力するもので、2 つ目は ListView です。レシピは、次の方法を使用して、名前、難易度、料理の種類の値で検索できます。

public class DatabaseManager
{
 // other class stuff
 public Cursor getMatchingRecipes(String name, String difficulty, String recipeType)
 {
  // this method has been tested and works fine, the query itself works fine
 }
}

次のような ListView アクティビティを開始するインテントを作成しています。

//code from the SearchParametersActivity
Intent intent = new Intent(this, RecipesListActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", name); // name is a String variable with value from an EditText
bundle.putString("difficulty", difficulty.toString()); // from a Spinner
bundle.putString("type", type.toString()); // from a Spinner
bundle.putInt("action", DatabaseManager.GET_SEARCH);
intent.putExtras(bundle);
startActivity(intent);

cursor = dbManager.getMatchingRecipes(name, difficulty, type); // calling this from this activity works fine and gives me the correct entries from the database

そして、次のように 2 番目のアクティビティからクエリを呼び出します。

//code from the RecipesListActivity
dbManager.open();
String name = getIntent().getExtras().getString("name");
String difficulty = getIntent().getExtras().getString("difficulty");
String type = getIntent().getExtras().getString("type");
cursor = dbManager.getMatchingRecipes(name, difficulty, type); // NOT WORKING

このクエリは常に ma に空のカーソルを与えます。文字列が正しく渡されていることを確認済みです。両方のアクティビティですべて同じ方法で出力されます。ただし、まったく同じ文字列値を手動で入力すると、正しい結果が得られます。

String name1 = "egg";
String difficulty1 = "EASY";
String type1 = "MAIN_COURSE";

cursor = dbManager.getMatchingRecipes(name1, difficulty1, type1); // WORKS

データベースのすべての行を返す同様の方法は、両方のアクティビティでうまく機能するため、意図を介して値を渡す際に何らかの間違いを犯しているに違いありません。これは私を無知のままにします、どんな助けも大歓迎です。

4

1 に答える 1

0

この方法を試してください

Intent intent = new Intent(this, RecipesListActivity.class);
Bundle bundle = new Bundle();
bundle.putExtra("name", name); // name is a String variable with value from an EditText
bundle.putExtra("difficulty", difficulty.toString()); // from a Spinner
bundle.putExtra("type", type.toString()); // from a Spinner
bundle.putExtra("action", DatabaseManager.GET_SEARCH);

startActivity(intent);

// RecipesListActivity のコード

dbManager.open();
String name = getIntent().getStringExtra("name");
String difficulty = getIntent().getStringExtra("difficulty");
String type = getIntent().getStringExtra("type");
于 2013-09-09T08:52:26.410 に答える