【发布时间】:2016-07-28 14:24:26
【问题描述】:
我正在尝试创建一个通知徽章,例如 Whatsapp(靠近选项卡),但无法获取存储在片段中的数据值,但由于徽章将在主要活动中,我无法获取(调用)来自片段的动态值。
以下是代码:
加载JSON代码
private void loadJSONClaim() {
sp = this.getActivity().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
String usr = sp.getString(UserID, "");
Retrofit retrofitclaim = new Retrofit.Builder()
.baseUrl("http://ec2-54-191-118-200.us-west-2.compute.amazonaws.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
RequestInterfaceClaim requestclaim = retrofitclaim.create(RequestInterfaceClaim.class);
Call<JSONResponseClaim> call = requestclaim.getJSONClaim(usr);
call.enqueue(new Callback<JSONResponseClaim>() {
@Override
public void onResponse(Call<JSONResponseClaim> call, Response<JSONResponseClaim> responseclaim) {
JSONResponseClaim jsonResponseClaim = responseclaim.body();
dataclaim = new ArrayList<>(Arrays.asList(jsonResponseClaim.getAndroidClaim()));
adapterclaim = new DataAdapterClaim(dataclaim);
mRecyclerViewClaim.setAdapter(adapterclaim);
eligitem.setText(" Eligible to earn " + dataclaim.size() + " items");
/* if(dataclaim.size()==0){
filldata.setVisibility(View.GONE);
emptyclaim.setVisibility(View.VISIBLE);
}
else{
emptyclaim.setVisibility(View.GONE);
filldata.setVisibility(View.VISIBLE);
}*/
}
所以我猜下面的代码可以在 Fragment 中工作,或者在 Main 活动中调用数据值应该可以解决问题。
MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CleverTapAPI ct;
BadgeView badgeView = new BadgeView(this,tabLayout);
badgeView.setText("2");
badgeView.show();
有人可以帮忙吗?
编辑:提炼的问题
【问题讨论】:
-
通常我只是从我的活动中引用我的片段。然后我在我的片段上创建一个公共方法来从我的活动中获取数据值。就这么简单
-
如果你想随时从片段中调用 mainActivity 方法,在片段中创建监听器并在主活动中添加回调
-
@HendraWijayaDjiono,我们可以使用相同的方法获得动态值吗?
-
我同意 bryan c 的观点,最佳做法是在您的片段中设置一个监听器,让您的活动为回调实现。
-
@bryanc 嘿,我还是 Android 的初学者,你能给我举个例子吗?我正在尝试从片段(来自服务器)获取动态数据。
标签: android android-fragments server badge