gpt4 book ai didi

java - 我在 android 项目中包含的列表 fragment 似乎没有在运行时调用

转载 作者:行者123 更新时间:2023-12-02 04:35:05 25 4
gpt4 key购买 nike

我在我的android项目中扩展了列表 fragment (默认情况下列表 fragment 由 ListView 组成),并且我设置了地址列表适配器(自定义适配器)扩展数组适配器以将信息传递到 ListView 。但我无法查看模拟器上的任何输出。如何克服这个问题?

我尝试添加一条 toast 消息来查看是否调用了我的 onCreate 重写方法,但 toast 消息没有出现在模拟器上。我不认为知道列表 fragment 是否在运行时被调用。 AddressBook 是我的单例类。我的 xml 文件仅包含一个 TextView 。

public class AddressListFragment extends ListFragment {

private ArrayList<NameAndAddress> mNameAndAddress;

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

mNameAndAddress=AddressBook.getInstance().getBook();
AddressListAdapter adapter=new AddressListAdapter(mNameAndAddress);
setListAdapter(adapter);

Toast.makeText(getContext(),"onCreate from list fragment",Toast.LENGTH_SHORT).show();//it didn't appear on the screen.
}
private class AddressListAdapter extends ArrayAdapter<NameAndAddress>{
public AddressListAdapter(ArrayList<NameAndAddress> nameAndAddresses){
super(getActivity(),R.layout.list_item,nameAndAddresses);
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView,@NonNull ViewGroup parent) {

if(convertView==null){
LayoutInflater inflater=getActivity().getLayoutInflater();
convertView=inflater.inflate(R.layout.list_item,null);
}

NameAndAddress temp=getItem(position);

TextView textView=convertView.findViewById(R.id.txtName);
textView.setText(temp.getmName());

return convertView;
}
}
}

我希望通过扩展列表 fragment 方法,我的输出具有 ListView 。




public class NameAndAddress implements Serializable {
private String mName;

public String getmName() {
return mName;
}

public String getmAddress() {
return mAddress;
}

public String getmAddress2() {
return mAddress2;
}

public String getmZipcode() {
return mZipcode;
}

private String mAddress;
private String mAddress2;
private String mZipcode;


public NameAndAddress(String mName, String mAddress, String mAddress2, String mZipcode) {
this.mName = mName;
this.mAddress = mAddress;
this.mAddress2 = mAddress2;
this.mZipcode = mZipcode;
}

}



最佳答案

我尝试了你的代码。您正在使用以下代码进行交易

FragmentManager myfragmentManager = getFragmentManager(); 
FragmentTransaction myfragmentTransaction =
myfragmentManager.beginTransaction();

AddressListFragment myfragment = new AddressListFragment();
myfragmentTransaction.add(R.id.list_item, myfragment);
myfragmentTransaction.commit();

但是从你的代码中list_item是布局文件。您将需要框架布局来替换。添加主 Activity 中的框架布局 ID 来代替 list_item。

当我尝试你的代码时,它显示 FragmentManager 已被废弃,因此你可以使用下面的代码

 AddressListFragment myfragment = new AddressListFragment() ;
android.support.v4.app.FragmentTransaction ft =
getSupportFragmentManager().beginTransaction() ;
ft.replace(R.id.frame_layout_id, myfragment);
ft.commit();

希望这对您有帮助

关于java - 我在 android 项目中包含的列表 fragment 似乎没有在运行时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56555247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com