Java 如何替换数组中的片段

Java 如何替换数组中的片段,java,android,arrays,android-fragments,Java,Android,Arrays,Android Fragments,我不明白。。我正在尝试使用transaction.replace使用arrayAdapter将一个片段替换为另一个片段。数组中的值是com.example.package.fragment-address。但我不知道如何替换碎片 如果我尝试将以下代码与这些行一起使用: FragmentTransaction transaction = getFragmentManager() .beginTransaction(); transaction.rep

我不明白。。我正在尝试使用transaction.replace使用arrayAdapter将一个片段替换为另一个片段。数组中的值是com.example.package.fragment-address。但我不知道如何替换碎片

如果我尝试将以下代码与这些行一起使用:

FragmentTransaction transaction = getFragmentManager()
                .beginTransaction();
        transaction.replace(R.id.fragment_container, Fragment.instantiate(this, getResources().getStringArray(R.array.adressLista[position])));
        transaction.commit(); 
我得到“表达式的类型必须是数组类型,但它解析为int”。但如果我使用相同的R.array替换TextView中的文本,如下所示:

TextView infoText = (TextView) getActivity().findViewById(R.id.fragmentTextView);
        infoText.setText(getResources().getStringArray(R.array.adressLista)[position]);
然后显示的文本是com.example。住址如何替换片段

代码: VisaFragment(错误位于底部第11行):

MenyFragment:

    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v4.app.ListFragment;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;

    public class MenyFragment extends ListFragment{

        onMenyKnappClickListener mCallback;
        public interface onMenyKnappClickListener {
            public void onMenyKnappVald (int position);
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

    System.out.println("MenyFragment onCreate");
            int layout = android.R.layout.simple_list_item_1;
            setListAdapter (new ArrayAdapter<String>(getActivity(), layout, getResources().getStringArray(R.array.menyLista)));
        }

        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
    System.out.println("MenyFragment onListItemClick");     
            mCallback.onMenyKnappVald(position);
            getListView().setItemChecked(position, true);
        }

        @Override
        public void onStart() {
            super.onStart();
            System.out.println("MenyFragment onStart");
            if (getFragmentManager().findFragmentById(R.id.fragment_container_stor) !=null){
                getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
                }
        }

        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
    System.out.println("MenyFragment onAttach");
            try {
                mCallback =(onMenyKnappClickListener) activity;
            } catch (ClassCastException e) {
                throw new ClassCastException(activity.toString() + " Måste implementera onMenyKnappClickListener");
            }
        }
}
activity_main.XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:baselineAligned="false"
    android:orientation="horizontal"    
    android:background="@color/menyBGColor"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment android:name="com.example.exempelfragmentsgrund.MenyFragment"
              android:id="@+id/meny_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

    <fragment android:name="com.example.exempelfragmentsgrund.VisaFragment"
              android:id="@+id/fragment_container"
              android:layout_weight="3"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

您可以看到

getResources().getStringArray(R.array.adressLista[position]) 
首先在文本视图中,然后在文本视图中

getResources().getStringArray(R.array.adressLista)[position]
因此,您只需将
[position]
getStringArray
方法移到外部

getResources().getStringArray(R.array.AddressLista[position])
给出了错误,因为getStringArray接受int参数,并且您试图像使用数组一样使用R.array.AddressLista,但它是整数,在values.xml中引用数组

Fragment.instantiate(this, getResources().getStringArray(R.array.adressLista[position])));

getResources().getStringArray()
返回
int[]
,您上面的代码片段将返回
int
。setText有两个变体,因此它可以工作:
setText(int)
setText(String)

如果我这样做,我会得到:“类型片段中的方法实例化(上下文,String)不适用于参数(VisaFragment,String)”,尝试用
getActivity()替换
this
所以它看起来是这样的:
transaction.replace(R.id.fragment\u容器,fragment.instantiate(getActivity(),getResources().getStringArray(R.array.AddressLista)[position])啊!谢谢这样就消除了代码错误!但是,现在它崩溃了,当我单击数组列表时,我不知道这是否与我以前的问题有关,或者其他地方是否有问题:好的,这就是为什么我仍然可以使用setText,但不能使用transaction.replace。由于数组值是一个文本,我想这个int是指一个值id?
getResources().getStringArray(R.array.adressLista)[position]
Fragment.instantiate(this, getResources().getStringArray(R.array.adressLista[position])));