【发布时间】:2014-08-14 17:17:59
【问题描述】:
我有一个问题,因为当我在片段中调用 getTag() 方法时返回 null,片段是我创建的 ViewPager 选项卡布局的一部分。
代码
import java.util.ArrayList;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
public class HistoryFragment extends Fragment {
ListView listView;
HistoryAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View history = inflater.inflate(R.layout.fragment_history, container, false);
ArrayList<ToSave> arrayOfData = new ArrayList<ToSave>();
adapter = new HistoryAdapter(getActivity().getBaseContext(), arrayOfData);
listView = (ListView) history.findViewById (R.id.listView1);
listView.setAdapter(adapter);
String myTag = getTag();
((MainActivity)getActivity()).setHistoryFragment(myTag);
Toast.makeText(getActivity(), "HistoryFragment.onCreateView(): " + myTag, Toast.LENGTH_LONG).show();
return history;
}
}
我想用它在 Fragment 之间进行通信(通过单击另一个 Fragment 中的按钮添加 ListView 项),但我无法使其工作。
编辑
TabPagerAdapter.java
@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
if (mFragmentAtPos0 ==null) {
mFragmentAtPos0 = new PartyFragment(listener);
}
return mFragmentAtPos0;
case 1:
return new SummaryFragment();
case 2:
return new HistoryFragment();
}
return null;
}
【问题讨论】:
-
你在哪里为你的片段设置标签?
-
TabPagerAdapter 究竟扩展了哪个类?你也覆盖 getItemId() 吗?
-
我假设您正在使用其中一个片段适配器并相应地更新了我的答案。
标签: android android-layout android-fragments android-listview android-viewpager