0

所以我要做的是,我有一个类似书的应用程序,并且想要在单击它时设置一个按钮,将 textview 更改为@string rec 中的字符串。但以不同的方式

我将把代码放一会儿,假设我在@string 中有一个字符串 NH1,NH2,NH3 我可以为按钮 View.setText(R.string.NH1); 这将起作用,但我想创建一个计数器并使其每次单击 counter++ 并希望它像这样 View.setText(R.string.NH+counter); 如果您知道我的意思,那么每次单击时都会转到下一个@string,而无需每次都更改布局并且没有数组,因为该段落很长

另外,如果我有 NH1-10 并且柜台没有停止并且仍然继续,我会怎么做。如果你在这里,谢谢你的阅读。

XML(纸张)

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
     >

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="496dp"
        android:background="@drawable/bg1"
        android:gravity="top"
        android:orientation="vertical"
        android:weightSum="100" >

        <Button
            android:id="@+id/bPrev"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="51dp"
            android:background="@android:color/transparent"
            android:text="                      " />


            <TextView
                android:id="@+id/tvHadith"
                android:layout_width="310dp"
                android:layout_height="210dp"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="64dp"
                android:text="@string/NH1"
                android:textColor="@android:color/white" />

        <Button
            android:id="@+id/bNext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/bPrev"
            android:layout_alignBottom="@+id/bPrev"
            android:layout_alignRight="@+id/tvHadith"
            android:background="@android:color/transparent"
            android:gravity="center"
            android:text="                   " />

"
    </RelativeLayout>

</LinearLayout>

爪哇(纳瓦威)

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Nawawi extends Activity {

    private static final String NH = null;
    Button Next;
    Button Prev;
    TextView View;
    int counter = 0;
    String H=NH;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sheetpaper);
        Next = (Button) findViewById(R.id.bNext);
        Prev = (Button) findViewById(R.id.bPrev);
        View = (TextView) findViewById(R.id.tvHadith);

        Next.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                counter++;
                View.setText(R.string.H);
            }   
}); Prev.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        counter--;
        View.setText(R.string.);
    }
});

    }

}
4

1 回答 1

0

您可以通过创建一个 XML 字符串数组来做到这一点,因此您的字符串仍将在资源中被引用,但您将能够遍历它们。

像这样的东西,在values/strings.xml

<string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
</string-array>

然后在活动中:

Resources res = getResources();
final String[] planets = res.getStringArray(R.array.planets_array);

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (counter < planets.length) {
            textView.setText(planets[counter]);
            counter++;
        }
    }
});

一定要检查counter数组长度,否则你会得到一个 IndexOutOfBoundsException。

于 2013-06-29T12:38:41.040 回答