我有一个TabHost
包含7个标签,每个标签中有10个项目(listView)。创建70 Intent
来处理每个项目的请求是非常不可能的。所以任何人都可以提供最好的方法来处理它们,就像每个标签的一个意图(即10个项目)但具有不同的数据。只是TextView
中的数据发生了变化。
答案 0 :(得分:0)
您可以使用intent传递数据,然后启动它。
添加此类数据
Intent intent = new Intent(current.this, AndroidTabRestaurantDescSearchListView.class);
intent.putExtra("keyName","value");
startActivity(intent);
像这样检索:
String data = getIntent().getExtras().getString("keyName");
答案 1 :(得分:0)
你考虑使用像EventBus这样的东西吗? (https://github.com/greenrobot/EventBus)
例如,您希望将一些数据从一个片段传递到另一个片段:
首先,创建一个数据类,例如我想在片段之间传递字符串:
public class EventData {
/**
* Data
**/
private String mMessage;
/**
* Constructor
**/
public EventData(String message) {
mMessage = message;
}
/**
* GET / SET
**/
public void setMessage(String message) {
mMessage = message;
}
public String getMessage() {
return mMessage;
}
}
FragmentA是一个接收器,在这个类中,您接收事件总线传递的数据:
public class FragmentA extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_a, container, false);
// Register this class to handle events from event bus
EventBus.getDefault().register(this);
return view;
}
/**
* This method would be fired upon event arrives
* @param data data, passed with an event. (In fact Argument can be any type)
**/
@Subscribe
public void onMessageEvent(final EventData data) {
// do some code
}
}
FragmentB:此类是数据发送者
public class FragmentB extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_b, container, false);
// Now just post something to fragment A
EventBus.getDefault().post(
new EventData("I am a message!");
);
return view;
}
}
请注意,通过所有应用程序可以访问发送到事件总线的数据,这意味着您可以注册多个片段来接收此事件。一般来说,这是一件好事,虽然有时候需要额外检查这是预期的事件(例如为每个事件分配唯一的ID)