【问题标题】:Get data value from Fragment into Main activity?从片段中获取数据值到主要活动中?
【发布时间】: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


【解决方案1】:

首先创建一个接口,其中包含您想发送的任何内容:

public Interface IEventListener{
   public void somMethod(data_type_toSend data)
}

然后在您的片段的类中定义并在构造函数中启动此接口:

IEventListener myListener;
public YourFragment (IEventListener listener){
     myListener=listener
}

终于让你的activity实现你的界面

public class myActivity extends ... implements **IEventListener**{

然后在您的活动中覆盖事件回调:

 @Override
  public void somMethod(data_type_toSend data){
//what you want to do with sent data to activity
}

【讨论】:

  • 只是一个有用的提示,如果您在 android studio 中生成一个带有片段的“通用”活动,它也会为您提供这种模式的可靠示例。
猜你喜欢
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多