【问题标题】:ANDROID: Navigate between multiple pairs of strings within one textViewANDROID:在一个 textView 内的多对字符串之间导航
【发布时间】:2014-11-20 18:10:21
【问题描述】:

闪存卡App

我在 strings.xml 上存储了多个静态字符串,我想使用 prev_Clicked/next_Clicked 按钮在它们之间导航。

我还希望能够在应用程序运行时存储问题和答案的字符串,并通过上一个/下一个按钮访问这些字符串

感谢您的宝贵时间,请遵循我的代码:


.java
public class MainActivity extends splashActivity {


    Button closeButton, addButton, prevButton, nextButton;
    TextView QAText, answerText;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_flashcard);

        QAText = (TextView) findViewById(R.id.fcfront_textView);
        answerText = (TextView) findViewById(R.id.fcfront_textView); //not used anywhere atm


        QAText.setOnClickListener(new View.OnClickListener()
        {
            //function to toggle between Q/A
            public void onClick(View v)
            {

                if(QAText.getText().toString().equals(getString(R.string.fc_front))){
                    QAText.setText(R.string.fc_back);
                    Toast.makeText(getApplicationContext(), R.string.fc_front , Toast.LENGTH_LONG).show();
                }else{
                    QAText.setText(R.string.fc_front);
                    Toast.makeText(getApplicationContext(), "SWAPPING: back-to-front", Toast.LENGTH_LONG).show();
                }
            }
        });

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }


    //gets click event directly from xml
    public void next_Clicked(View view)
    {
        //test:
        Toast.makeText(getApplicationContext(), "Next button works!!", Toast.LENGTH_LONG).show();
    }

    public void prev_Clicked(View view)
    {
        //test:
        Toast.makeText(getApplicationContext(), "Prev button works!!", Toast.LENGTH_LONG).show();
    }



} //end of main


布局.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MyActivity"
    android:clickable="true"
    android:id="@+id/background"
    android:background="#ff80b5ff">

    <TextView
        android:text="@string/fc_front"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/fcfront_textView"
        android:layout_centerVertical="true"
        android:textSize="30sp"
        android:layout_centerHorizontal="true"
        android:linksClickable="true"
        android:textIsSelectable="false"
        android:singleLine="true"
        android:onClick="OnClick"

        android:clickable="true" />

    <!--<TextView-->
        <!--android:text="@string/fc_back"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:layout_below="@+id/fcfront_textView"-->
        <!--android:layout_centerHorizontal="true"-->
        <!--android:id="@+id/fcback_textView"-->
        <!--android:textSize="30sp"-->
        <!--android:linksClickable="true"-->
        <!--android:textIsSelectable="false"-->
        <!--android:singleLine="true"-->
        <!--android:clickable="true" />-->

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/main_prev"
        android:id="@+id/prevbutton"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:gravity="bottom|center"
        android:layout_weight="1"
        android:textSize="30sp"
        android:layout_alignParentStart="true"
        android:onClick="prev_Clicked"
        />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/main_next"
        android:id="@+id/nextbutton"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:gravity="bottom|center"
        android:layout_weight="1"
        android:textSize="30sp"
        android:hint="Browse +"
        android:onClick="next_Clicked"


    android:layout_alignParentEnd="true" />


<Button
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="X"
    android:id="@+id/closebutton"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:gravity="center"
    android:textSize="30sp"

    android:layout_alignParentEnd="true" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="+"
    android:id="@+id/plusbutton"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:gravity="center"
    android:textSize="30sp"

    android:layout_alignParentStart="true" />

</RelativeLayout>


字符串.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">CSCE305HW1</string>
    <string name="fc_front">FLASHCARD: FRONT</string>
    <string name="fc_back">FLASHCARD: BACK</string>
    <string name="Q1">Question1</string>
    <string name="A1">Answer1</string>
    <string name="Q2">Question2</string>
    <string name="A2">Answer2 </string>
    <string name="action_settings">Nothing here yet</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="title_activity_goodbye">goodbye</string>
    <string name="main_next">Next</string>
    <string name="main_prev">Previous</string>

</resources>

【问题讨论】:

    标签: java android xml string


    【解决方案1】:

    将您的字符串定义为xml 中的数组,如下所示:

    <string-array name="your_string_array">
        <item>string1</item>
        <item>string1</item>
    </string-array>
    

    并将它们用作代码中的数组,如下所示:

    String[] some_array = getResources().getStringArray(R.array.your_string_array);
    int index = 0 ;
    ...
    prevButton.setOnClickListener(this);
    nextButton.setOnClickListener(this);
    ...
    @Override
    public void onClick(View v) {
      switch(v.getId) {
         case R.id.your_next_button_id : 
          index++;
          break;
         case R.id.your_previous_button_id : 
          index--;
          break;
      }
      yourTextView.setText(some_array[index]);
    }
    

    【讨论】:

    • 感谢您的帮助,我快到了!关于如何使用 prev/next 按钮进行导航的任何提示?我试图为字符串数组使用适配器,但它似乎只适用于 Listviews,而不是 Textviews
    • 查看我的更新答案,如果它解决了您的问题,请接受它。 :)
    【解决方案2】:

    将字符串放入数组中。您将能够使用数组索引向后、向前导航或直接跳转到给定的字符串。

    【讨论】:

    • 怎么样?即使我将字符串放在数组上,如果在由上一个/下一个按钮控制的 for 循环中,我如何制作 main?
    • 不需要 for 循环。只需使用 mohammads 代码加载数组,然后使用控制整数来引用数组中的哪个字符串是当前字符串。
    • 我很难实现这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多