2012-01-08 20 views
5

これまでに一度聞いたことがありますが、それはまったく機能しませんでした。だから私はもう一度尋ねると思った。インテントによるアクティビティ間でのJSON配列の受け渡し

インテントを使用して2番目のアクティビティに渡したいJSON配列があります。

これはmysqlデータベースに接続し、ユーザーに関するデータをJSON配列に格納するコードの一部です。これはこれまでのところすべて動作します。

try{ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
    sb = new StringBuilder(); 
    sb.append(reader.readLine() + "\n"); 

    String line="0"; 
    while ((line = reader.readLine()) != null) { 
     sb.append(line + "\n"); 
    } 
    is.close(); 
    result=sb.toString(); 

    }catch(Exception e){ 
     Log.e("log_tag", "Error converting result "+e.toString()); 
    } 

String ct_user; 
String ct_pass; 

Intent personal = new Intent(Home.this, Loggedin.class); 

try{ 
    jArray = new JSONArray(result); 
    JSONObject json_data=null; 
    json_data = jArray.getJSONObject(0); 
    ct_user = json_data.getString("user"); 
    ct_pass = json_data.getString("pass"); 


    if (passwordstring.equals(ct_pass)){ 

     Bundle b = new Bundle();     
     b.putString("userdata",json_data.toString()); 
     personal.putExtras(b); 

     startActivity(personal); 
      } 
    } 

私の2番目のアクティビティ(Loggedin)に、完全なJSONarrayをインテントで送信したいと思います。たとえば、私はct_email = json_data.getString( "email")のように表示できます。これは、最初のアクティビティがmysqlから取得する配列内の別の値です。第二の活動にエラーが、それは意図にバンドルを変換できませんでしたと言い続け、私は私が考えることができるすべてを試してみましたので、解決策は私のために動作しなかったこと passing jsonarray from 1 activity to another

これは、このテーマに関する他の質問でしたの。

Intent b = getIntent().getExtras(); 
String userdata=b.getString("userdata"); 

おかげ


EDIT迅速な回答をする男性のための

感謝。私はStackoverflowの新機能ですので、コードマーキングなどの間違いを赦してください。私はすべてそれを正しく実行しようとしています。

しかし、それはまだ私のために働いていません。これは私の第二の活動の一部です:

public class Loggedin extends Activity { 


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

    myfunction(); 

} 

public void myfunction(){ 

    Bundle b = getIntent().getExtras(); 
    String userdataArray = b.getString("userdata"); 

    String ct_email; 
    ct_email = userdataArray.getString("email"); 


} 

} 

エラーは、「法のgetString(文字列)は、String型のために定義されていません」されます。 私は何か愚かなことをする必要があります。

答えて

6

getExtras()は、意図ではなくバンドルを返します。このようなコードを変更してみてください。

Bundle b = getIntent().getExtras(); 
String userdata=b.getString("userdata"); 
+0

1正しい答えのために、あなたはコードの次の時間のようにコード:) – MByD

+0

感謝をマークしていることを確認してください:あなたは、あなたはそのデータを引き出すためにそれを使用することができますJSONオブジェクトに文字列を解析する必要があります。まだ動作しません。私は最初の投稿を編集しました。 –

+0

あなたの問題は何ですか? – kosa

6

getString()はJSONObject NOT Stringで定義されているため、StringでgetString()を呼び出すことはできません。したがって、コンパイラエラー。

public void myfunction(){ 

    Bundle b = getIntent().getExtras(); 

    // parse the JSON passed as a string. 
    JSONObject json = new JSONObject(b.getString("userdata")); 
    String ct_email = json.getString("email"); 
} 
+0

これは私が逃した最後のステップでした。ありがとう! –

関連する問題