2012-02-17 14 views
0

私はAndroidアプリで新しいアクティビティを開始しようとしています。最初のアクティビティから2番目のアクティビティに単純な文字列を渡そうとしています。私は文字列を2番目のアクティビティでTextviewに表示したいが、それはうまくいきません。私は間違って何をしていますか?文字列が2番目のAndroidアクティビティに渡されない

初期活性:

package com.amritayalur.mypowerschool; 



import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.text.method.ScrollingMovementMethod; 
import android.view.Gravity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 



public class MyPowerSchoolActivity extends Activity { 
Button buttonSubmit; 
TextView TextViewTitle; 
TextView TextViewDesc; 
EditText EditTextURL; 
String url = ""; 
String str; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    buttonSubmit = (Button) findViewById(R.id.buttonSubmit); 
    TextViewTitle = (TextView) findViewById(R.id.TextViewTitle); 
    TextViewDesc = (TextView) findViewById(R.id.TextViewDesc); 

    EditTextURL = (EditText) findViewById(R.id.EditTextURL); 


    //Start TextView 
    TextViewTitle.setText("MyPowerSchool"); 


    //button listener 
    buttonSubmit.setOnClickListener(new View.OnClickListener() { 


     String url = EditTextURL.getText().toString(); 


     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent i = new Intent(MyPowerSchoolActivity.this, 
creds.class);  


      i.putExtra("pschoolurl", url); 
      final int result = 1; 
      startActivityForResult(i, result); 

     } 

    }); 



}  
} 

第二活性:

package com.amritayalur.mypowerschool; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.webkit.WebView; 
import android.widget.Toast; 
import android.widget.TextView; 



public class creds extends Activity { 

String test; 
TextView TextViewTest; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second); 




    Intent intent = getIntent(); 
    String test = intent.getExtras().getString("pschoolurl"); 

    TextViewTest = (TextView) findViewById(R.id.TextViewTest); 
    TextViewTest.setText(test); 

} 
} 

私は適切に第二活性のTextView表示を知っています。変数ではなくダミーテキストで動作します。

+0

ちょうどうまくいかない - それはクラッシュするのですか?空の文字列を表示しますか?何が起こるのですか? –

+0

2番目のアクティビティには空白の背景があります。テキストビューでは文字は表示されません。 – Slicekick

+0

'url 'の値をインテントに追加する前に' Log.i( "MyPowerSchoolActivity"、 "Url =" + url); 'を使用してください。 – JackMahoney

答えて

3

あなたはリスナーを作成するときにリスナーが呼び出されたときに、代わりに、あなたはそれを取得する必要があり、早期にあまりにも文字列をインスタンス化:

@Override 
    public void onClick(View v) { 
     Intent i = new Intent(MyPowerSchoolActivity.this, creds.class);  
     i.putExtra("pschoolurl", EditTextURL.getText().toString()); 
     // get the text here  ^^^ 
     final int result = 1; 
     startActivityForResult(i, result); 
    } 

ところで、命名規則に従うと小文字で変数を起動してください(editTextURL)他の人にはあまり混乱させないコードにします(私のようです:))

+0

すばらしい!文字列をあま​​りにも早くインスタンス化する問題を私に説明してもらえますか? – Slicekick

+0

あなたが初期化した時点(リスナーを作成したとき)はonCreateにありますが、editTextはまだ空です。空の文字列を割り当てました。 – MByD

+0

これらの命名規則へのリンクは次のとおりです:http://source.android.com/source/code-style.html - 何かが一度スリップすると、 "言葉を頭文字として扱う"の部分:P(editTextUrl) –

0

URLの値は、値を入力する前にOnClickListenerのインスタンス化時に設定されています。代わりにonClickメソッドの本体でTextViewから値を読み込んでみてください。

0

あなたのコードでnottingが間違っている場合は、buttonsubmit.onclicklistenerメソッドのurlの横にあるStringを削除してください。あなたはある活動から別の活動に文字列を送ろうとするなら、結果のために活動を開始する必要はありません。 これはあなたの2番目の活動にあります。

Bundle b=getIntent().getExtras(); 
String url = b.getInt("pschoolurl"); 
0

チェックこれを単に最初のアクティビティ注意のあなたのonclickにこのコードを置く: - >直接その文字列を渡しません、あなたがショーを行います場合のEditTextは、文字列の編集テキストを保存し、それを渡すDONOTキャプチャ。以下の例を参照してください

今第二の活動でこれを入れ
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    Intent i = new Intent(this,Web.class); 
    i.putExtra("epuzzle",urlenter.getText().toString()); 
    final int result = 1; 
     startActivityForResult(i, result); 
    } 

、注意: - >は2番目のそれは動作しません活動の別の文字列への最初の活動のpasseed文字列を保存しようとするで、あなたが直接べきloadurlに保存して渡す代わりに、文字列をloadurlに渡してください。

Intent intent = getIntent(); 
    w.loadUrl(intent.getExtras().getString("epuzzle")); 
    w.getSettings().setJavaScriptEnabled(true); 

plz私があなたのために働いているかどうか教えてください。

関連する問題