【问题标题】:how to get xml text selected in my java code [android]如何在我的 java 代码中选择 xml 文本 [android]
【发布时间】:2015-10-31 22:58:19
【问题描述】:

当我长按任何教授名称时,会弹出一个上下文菜单 进一步要求选择其中一个选项(为了更好地理解请在下面查看)

我有一个 resc.xml 文件,其中提到了教授电子邮件、办公时间和电话号码的详细信息。我想要做的是,当有人点击上下文菜单中的三个选项中的任何一个时,它应该显示一个 toast,给出该特定教授办公时间的详细信息或电子邮件 ID,无论在上下文菜单中点击什么。

例如,如果有人长按“Dr David Hicks”名称上下文菜单会弹出 然后如果我点击“电子邮件 ID”,它应该会显示来自 resc.xml 文件的大卫希克斯博士电子邮件地址的祝酒词。

注意:主页的列表视图,其中所有教授的姓名 正在显示 正在从另一个 xml 文件“item_data.xml”中获取

有人可以帮我解决这个问题吗!

MainActivity.java

package com.example.tamukcompscfaculty;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class MainActivity extends ListActivity {

        private String[] Professors;
        String na;
        int position;

        int position2;
        String ss;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                 Professors = getResources().getStringArray(R.array.Professors);
                ArrayAdapter<String> ProgAdapter =  new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Professors);
                setListAdapter(ProgAdapter);
                registerForContextMenu(getListView());
        }

        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
                if(v==getListView()){

                        MenuInflater menuInflater=getMenuInflater();
                        menu.setHeaderTitle(R.string.More);
                        menuInflater.inflate(R.menu.details, menu);

                        //get the position of row clicked
                AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
                position = info.position;
                        ss = Professors[position].toString(); // String ss is holding name of professor


                }
                super.onCreateContextMenu(menu, v, menuInfo);
        }

        @Override
        public boolean onContextItemSelected(MenuItem args) {
                na = args.toString(); // na is holding string value of the item clicked in context menu



                return super.onContextItemSelected(args);
        }


}

Strings.XML

    <?xml version="1.0" encoding="utf-8"?>
    <resources>

        <string name="app_name">TamukCompScFaculty</string>
        <string name="action_settings">Settings</string>
        <string name="FacultyText"><u>Faculty Office Hours Details</u></string>
        <string name="Office_Hours">Check Office Hours</string>
        <string name="Email">Email Id</string>
        <string name="Phonenumber">Phone Number</string>
        <string name="More"><u>Click below to check the details</u></string>
        <string name="title_activity_start">StartActivity</string>

    </resources>


resc.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name = "resc">

            <item>Dr. David Hicks
                             <Email>david@tamuk.com</Email>
                             <Phonenumber>512-000-0000</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                 <item >Dr. Mohammad S. Khan
                                      <Email>khan@tamuk.com</Email>
                             <Phonenumber>512-111-1111</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                 <item >Dr. Young Lee
                           <Email>lee@tamuk.com</Email>
                             <Phonenumber>512-222-1111</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                 <item >Dr. Mais Nijim
                          <Email>Nijim@tamuk.com</Email>
                             <Phonenumber>512-333-1111</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                 <item >Dr. Ashraf Yaseen
                          <Email>Yaseen@tamuk.com</Email>
                             <Phonenumber>512-444-1111</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                <item >Ms. Jeong Yang
                               <Email>Yang@tamuk.com</Email>
                             <Phonenumber>512-555-1111</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                <item >Dr. Abdelrahman Elleithy
                               <Email>Elleithy@tamuk.com</Email>
                             <Phonenumber>512-666-1111</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                <item >Dr. Wei-Da Hao
                               <Email>Hao@tamuk.com</Email>
                             <Phonenumber>512-777-1111</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                <item >Dr. Syed Iqbal Omar
                              <Email>Omar@tamuk.com</Email>
                             <Phonenumber>512-888-1111</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                <item >Dr. Muhammad Aurangzeb
                              <Email>Aurangzeb@tamuk.com</Email>
                             <Phonenumber>512-999-1111</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

                <item >Dr. Gahangir Hossain
                               <Email>Hossain@tamuk.com</Email>
                             <Phonenumber>512-111-4444</Phonenumber>
                             <Office_Hours>Mon to fri 9am to 1pm</Office_Hours>
                 </item>

        </string-array> 
    </resources>

item_data.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name = "Professors">

                <item >Dr. David Hicks</item>
                   <item >Dr. Mohammad S. Khan</item>
            <item >Dr. Young Lee</item>
            <item >Dr. Mais Nijim</item>
            <item >Dr. Ashraf Yaseen</item>
                <item >Ms. Jeong Yang</item>
                <item >Dr. Abdelrahman Elleithy</item>
                <item >Dr. Wei-Da Hao</item>
                <item >Dr. Syed Iqbal Omar</item>
                <item >Dr. Muhammad Aurangzeb</item>
                <item >Dr. Gahangir Hossain</item>


        </string-array>    

    </resources>

activity_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:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.tamukcompscfaculty.MainActivity" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/profs"
            android:layout_alignParentTop="true"
            android:layout_marginTop="33dp"
            android:text="@string/FacultyText"
            android:textColor="#000000"
            android:textSize="20sp"
            android:textStyle="bold|italic" />

        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:layout_centerHorizontal="true"
            android:layout_marginLeft="-25dp" >

        </ListView>

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="match_parent"
            android:layout_height="35dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_alignRight="@+id/textView1"
            android:scaleType="fitXY"
            android:src="@drawable/engineering" />

    </RelativeLayout>

【问题讨论】:

  • 如果需要任何其他细节请告诉我

标签: android xml eclipse


【解决方案1】:

我们以电子邮件为例。像这样定义字符串 xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name = "Professors">
        <item >Dr. David Hicks</item>
        <item >Dr. Mohammad S. Khan</item>
        <item >Dr. Young Lee</item>
        <item >Dr. Mais Nijim</item>
        <item >Dr. Ashraf Yaseen</item>
        <item >Ms. Jeong Yang</item>
        <item >Dr. Abdelrahman Elleithy</item>
        <item >Dr. Wei-Da Hao</item>
        <item >Dr. Syed Iqbal Omar</item>
        <item >Dr. Muhammad Aurangzeb</item>
        <item >Dr. Gahangir Hossain</item>
    </string-array>

    <string-array name = "Emails">
        <item >david@tamuk.com</item>
        <item >khan@tamuk.com</item>
        <item >lee@tamuk.com</item>
        <item >Nijim@tamuk.com</item>
        <item >Yaseen@tamuk.com</item>
        <item >Yang@tamuk.com</item>
        <item >Elleithy@tamuk.com</item>
        <item >Hao@tamuk.com</item>
        <item >Omar@tamuk.com</item>
        <item >Aurangzeb@tamuk.com</item>
        <item >Hossain@tamuk.com</item>
    </string-array>

</resources>

在您的 JAVA 代码中,

    @Override
    public boolean onContextItemSelected(MenuItem menuItem) {
            switch(menuItem.getItemId()) {
                case R.id.email:
                    String email = getResources().getStringArray(R.array.Emails)[position];
                    break;
                case R.id.phone_number:
                    break;
                case R.id.office_hours:
                    break;
            }
            return true;
    }

R.id.email、R.id.phone_number、R.id.office_hours 是您在 R.menu.details 中分配的 id

【讨论】:

  • 请检查 resc.xml 我想从那个 xml 文件中提取信息。例如,如果我长按“Dr David Hicks”,将弹出名称上下文菜单,然后如果我点击“Email id” ' 它应该显示来自 resc.xml 文件的 david hicks 博士电子邮件地址的祝酒词。我想知道我们该怎么做。
  • 我明白了。我会将所有这些放入一个 json 文件并将文件放在 res/raw 文件夹下,然后将文件解析为您自己的数据模型,以便您可以做任何您想做的事情。但是如果你必须使用xml,就像你的教授数组一样,你可以定义另外3个数组,分别是电子邮件、电话号码和officeHours,使用menuItem id你知道要查找哪个数组,使用位置你知道要查找数组中的哪个项目得到。
  • 我想使用 xml 文件并尝试实现您提到的内容。如果我能够完成它会通知您!
  • 嘿,你能帮我解决这个问题吗?我无法实现你提到的内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 2019-05-12
  • 1970-01-01
相关资源
最近更新 更多