【问题标题】:How to display selected spinner item name from first activity and associated string from second activity both on the second activity?如何在第二个活动上显示来自第一个活动的选定微调器项目名称和来自第二个活动的关联字符串?
【发布时间】:2021-09-14 16:05:36
【问题描述】:

在第一个活动中选择微调器项目时,我希望所选项目的名称出现在第二个活动的屏幕顶部(它确实如此),并在第二个活动中显示与所选项目关联的字符串活动(目前没有)。

目前无论选择哪个微调器项,它都会显示相同的字符串。

我想我应该从第二个 Java 类中调用字符串资源,但我不知道该怎么做。我已经在这里和其他地方寻找答案,但到目前为止没有任何效果。如果有人能告诉我这是如何完成的,我将不胜感激。谢谢!

如果我点击任何“战舰”字符串显示。我如何让它仅在选择战舰北卡罗来纳时显示?字符串必须存储在字符串资源文件中。谢谢,我是安卓新手。这是我的第一个项目。

这是第一个活动的 Java 代码和活动:

 

    private boolean isFirstSpinnerItem = true;
    
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long l) {
    
            findViewById(R.id.sites);
            String text = parent.getItemAtPosition(position).toString();
            if (isFirstSpinnerItem) {
                isFirstSpinnerItem = false;
            } else {
                Intent intent = new Intent(this, DetailActivity.class);
                intent.putExtra(DetailActivity.EXTRA_MESSAGE, text);
                startActivity(intent);
            }
    
        }


    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="16dp"
        tools:context=".MainActivity">
    
    
        <Spinner
            android:id="@+id/sites"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="16dp"
            android:layout_marginTop="40dp"
            android:entries="@array/historic_sites" />
    
    
    </LinearLayout>

这是第二个活动的 Java 代码和活动:

 

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_detail);
            Intent intent = getIntent();
            String messageText = intent.getStringExtra(EXTRA_MESSAGE);
            TextView messageView = findViewById(R.id.sites);
            messageView.setText(messageText);
        }

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    tools:context=".DetailActivity">

    <TextView
        android:id="@+id/sites"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="16dp"
        android:layout_marginTop="40dp"
        android:entries="@array/historic_sites"
        android:textSize="25sp" />

    <TextView
        android:id="@+id/battleship"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/battleship"
        android:layout_gravity="center"
        android:layout_margin="16dp"
        android:layout_marginTop="40dp"/>


</LinearLayout>


 <resources>
        <string name="app_name">Wilmington Walkabout</string>
    
    
        <string-array name="historic_sites">
            <item>Please select an option</item>
            <item>Battleship North Carolina</item>
            <item>Wilmington Railroad Museum</item>
            <item>Bellamy Mansion Museum</item>
        </string-array>
    
        <string name="battleship"> display only if battleship north carolina is selected.</string>
    
        <string name="railroad"> display only if Wilmington Railroad Museum is selected</string>
        
        <string name="house">display only if Bellamy Mansion Museum is selected</string>
    
    </resources>

【问题讨论】:

    标签: java android xml


    【解决方案1】:

    您必须选择在 TextView 中显示的值,我建议仅按 Intent 位置发送,然后在 DetailActivity 中使用此位置显示值

    你可以这样做:

    sitesArray = getResources().getStringArray(R.array.historic_sites);
    
    ((messageView.setText(sitesArray[position]);
    
    battleshipArray = getResources().getStringArray(R.array.battleships);
        
    ((battleshipView.setText(battleshipArray[position]);
    

    [编辑] 在这样的资源中创建数组

      <string-array name="battleships">
                <item>display only if battleship north carolina is selected.</item>
                <item>display only if Wilmington Railroad Museum is selected.</item>
                <item>display only if Bellamy Mansion Museum is selected.</item>
     
            </string-array> 
    

    【讨论】:

    • 感谢您的回复,但这对我不起作用。
    • 您在资源中创建了第二个数组?究竟什么不起作用?
    • 我应该说,我无法使用数组来实现(我还在学习编程基础),我使用字符串并从 DetailActivity 中调用它们。再次感谢您,好心的先生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多