0

私はコードの一部で立ち往生しています。データベースから値を取得しているPHPページがありますが、これで問題ありません。次に、私のアクティビティで、テキストビューに表示するためにそれを返します。問題はそれです。xmlに背景を取得しましたが、表示されません。

また、テキストビュー http://www.wvvzondag2.nl/android/leesverslag.php {"introtext":""データベースからの変数値"}も表示されます。

これが私の活動です

public class Leesverslag extends Activity{
/** Called when the activity is first created. */

TextView txt;

public static final String KEY_121 = "http://www.wvvzondag2.nl/android/leesverslag.php"; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.leesverslag);
    // Create a crude view - this should really be set via the layout resources  
    // but since its an example saves declaring them in the XML.
    ScrollView rootLayout = new ScrollView(getApplicationContext());
    //txt = (TextView)findViewById(R.id.verslag);
    txt = new TextView(getApplicationContext());  
    rootLayout.addView(txt);  
    setContentView(rootLayout);
    // Set the text and call the connect function.  
    txt.setText("Connecting..."); 
    //call the method to run the data retrieval and convert html tag to (plain) text
    txt.setText(Html.fromHtml(getServerData(KEY_121))); 
}

private String getServerData(String returnString) {

   InputStream is = null;

   String result = "";
    //the year data to send
   String titelhoofd = getIntent().getStringExtra("titelverslag");
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("titel",titelhoofd));

    //http post
    try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(KEY_121);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

    }catch(Exception e){
            Log.e("log_tag", "Error in http connection "+e.toString());
    }

    //convert response to string
    try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is),8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            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());
    }
    //parse json data
    try{
            JSONArray jArray = new JSONArray(result);
            for(int i=0;i<jArray.length();i++){
                    JSONObject json_data = jArray.getJSONObject(i);
                    Log.i("log_tag","id: "+json_data.getString("introtext")
                    );
                    //Get an output to the screen
                    returnString += jArray.getJSONObject(i); 
            }
    }catch(JSONException e){
            Log.e("log_tag", "Error parsing data "+e.toString());
    }
    return returnString; 
}    

}

これは私のXMLです

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="visible"
    android:keepScreenOn="true"
    android:id="@+id/scrollView1"
    android:scrollbars="vertical"
    android:background="@drawable/bg">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/verslag"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </TextView>

    </LinearLayout>


</ScrollView>

テキストと背景だけを見たいのですが、修正できないようです。

誰かがこれを手伝ってくれますか?

よろしく、パトリック

4

2 に答える 2

1

問題は、最初のコンテンツビューを設定し、setContentView(R.layout.leesverslag);その後、最初のビューを上書きするために使用する新しいビューを作成し続けることです。

これを置き換えてみてください:

ScrollView rootLayout = new ScrollView(getApplicationContext());
//txt = (TextView)findViewById(R.id.verslag);
txt = new TextView(getApplicationContext());  
rootLayout.addView(txt);  
setContentView(rootLayout);
// Set the text and call the connect function.  
txt.setText("Connecting..."); 

これとともに:

txt = (TextView)findByViewId(R.id.*yourtextviewid*)
txt.setText("Connecting...");

これにより、最初のコンテンツビューにあるTextViewがに割り当てられますtxt

于 2012-08-17T11:38:37.530 に答える
1

複数のビューを追加してビューを直接スクロールすることはできません。xmlの方法のようにLinaerLayoutへの参照を取得するだけです。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible"
android:keepScreenOn="true"
android:id="@+id/scrollView1"
android:scrollbars="vertical"
android:background="@drawable/bg">

<LinearLayout  android:id="@+id/Linear"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</LinearLayout>

次に、oncreateメソッドで

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.leesverslag);
LinearLayout mLinearlayout= (LinearLayout) findViewById(R.id.Linear);
    TextView txt = new TextView(this);
    txt.setText("Connecting..."); 
    mLinearlayout.addView(txt);

    Runnable postRunnable = new Runnable() {

        @Override
        public void run() {
            txt.setText(Html.fromHtml(getServerData(KEY_121))); 

        }
    };
    txt.post(postRunnable,500);

}

于 2012-08-17T11:58:27.947 に答える