изменение значения строки, отображаемого в scrollView - PullRequest
0 голосов
/ 30 марта 2012

Во-первых, я хотел бы поблагодарить всех присутствующих здесь, потому что я новичок и многому научился, просто читая вопросы и ответы, которые вы публикуете. Я пытаюсь передать большое количество текста конечным пользователям, и, будучи в состоянии сделать это с помощью новых классов и файлов .xml, это становится громоздким. я думал о потоке, выравнивающем приложение, просто имея единственный макет xml для определенного набора текстовых строк и просто изменив @string / ????? через кнопку onclick и setText, но узнал, что я не могу изменить начальное значение @string в XML-файле. вопрос это правда? и есть ли более эффективный способ сделать это, то есть (установка android: text в var и установка var в java для конкретной строки) или мне нужен новый макет xml для каждой строки? (это много траты, если вы спросите меня) и немного понимания, в настоящее время есть около 250 различных строк с минимум 5 параграфов и растут.

вот мой код.

фрагмент первой Java

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Monlt extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.monolt);


    final MediaPlayer buttonsound = MediaPlayer.create(Monlt.this, (R.raw.buttonclick));


            Button button1 = (Button) findViewById(id.button1);
            Button button2 = (Button) findViewById(id.button2);
            Button button3 = (Button) findViewById(id.button3);
            Button button4 = (Button) findViewById(id.button4);
            Button button5 = (Button) findViewById(id.button5);
            Button button6 = (Button) findViewById(id.button6);
            Button button7 = (Button) findViewById(id.button7);
            Button button8 = (Button) findViewById(id.button8);
            Button button9 = (Button) findViewById(id.button9);
            Button button11 = (Button) findViewById(id.button11);
            Button button12 = (Button) findViewById(id.button12);
            Button button13 = (Button) findViewById(id.button13);
            Button button14 = (Button) findViewById(id.button14);
            Button button15 = (Button) findViewById(id.button15);
            Button button16 = (Button) findViewById(id.button16);
            Button button17 = (Button) findViewById(id.button17);
            Button button18 = (Button) findViewById(id.button18);
            Button button19 = (Button) findViewById(id.button19);
            Button button21 = (Button) findViewById(id.button21);

            button1.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    buttonsound.start();
                    final TextView mview = (TextView) findViewById(R.id.solayout2); 
                    mview.setText("mono1"); //this was my first string to pass
                    startActivity(new Intent("com.nvar.Sorders.Mono.ASO1"));

                }

            });

            button2.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    buttonsound.start();
                    startActivity(new Intent("com.nvar.Sorders.ASO1"));
                    final TextView mview = (TextView) findViewById(R.id.solayout2); 
                    mview.setText("@string/mono2");/this is the second string to pass
                }
            });
                `

теперь этот код работает, когда я удаляю 2 строки текстового представления в onclick тогда он вызывает другой класс Aso1, который я хотел бы сохранить для дальнейшего использования. Aso1 Java-код ` пакет com.nvar.Sorders.Mono;

import com.nvar.Sorders.R;


import android.app.Activity;
import android.os.Bundle;

public class Aso1 extends Activity   {



// Called when the activity is first created.
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.solayout2);


}
}

`

а затем первый xml

`

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

        <TextView
            android:id="@+id/solayout2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="mview"/>

 <!--            android:text="@string/monoaso1"/>   
 -->
 <!--  this is were i was playing with the strings  />
 -->        


    </LinearLayout>


</ScrollView>

` любая помощь в этом вопросе будет принята с благодарностью, и помните "noob" для java / android! так что, если есть образец того, на что я мог или должен был смотреть, не стесняйтесь бить меня по голове и указывать в правильном направлении. я не против читать :) еще раз спасибо.

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

При отображении String s вы можете использовать TextView и иметь несколько строк, а затем просто обновить его текстовое значение в коде.Ему даже не нужен текст по умолчанию

<ScrollView
    ...some params...>
    <TextView
        android:id="@+id/my_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="10"/>
</ScrollView>

Это даст вам TextView 10 строк.Затем в коде вы можете сделать что-то вроде этого, чтобы обновить значение:

String longText = getVeryLongText();
((TextView)findViewById(R.id.my_text)).setText(longText);

Тогда у вас будет нечто, похожее на прокручиваемый абзац текста

0 голосов
/ 30 марта 2012

* @ string / string_name * в xml не предназначены для изменения значения. Они там, чтобы помочь вам с локализацией. В настоящее время этот xml находится здесь http://developer.android.com/guide/topics/resources/localization.html

res/values/string.xml 

у вас может быть другая строка xml с другим языком, как в следующем месте, например, франция

res/values-fr/strings.xml

Вы можете узнать больше об этом здесь.

Теперь давайте перейдем к тому, как ссылаться на это имя_строки из java

Resources res = Monlt.this.getResources();
mview.setText(res.getString(R.string.string_name)); 
//do something
mview.setText(res.getString(R.string.mono2)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...