Java 如何替换数组中的片段
我不明白。。我正在尝试使用transaction.replace使用arrayAdapter将一个片段替换为另一个片段。数组中的值是com.example.package.fragment-address。但我不知道如何替换碎片 如果我尝试将以下代码与这些行一起使用: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
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])));