回到它时如何刷新片段UI

时间:2016-02-19 11:49:01

标签: android android-fragments

我是Android的新手并用片段学习东西,并为它做了一个演示,因为我有一个片段,我们可以在那里进行另一个活动,一些计算正在执行,之后我们回到了frgament那时我想把这个计算值显示给我的片段的textview,那么我应该使用哪种生命周期方法呢?我已经使用了无法工作的onresume ...

public void onResume () {

        super.onResume();

        //tvFollowings.setText((sharedConnect.getCurrentUser().userFollowingCount)
//              + " Following");
                System.out.print("------user count is-------" + String.valueOf(sharedConnect.getCurrentUser().userFollowingCount));
        Toast.makeText(getActivity(), "------user count is-------" + String.valueOf(sharedConnect.getCurrentUser().userFollowingCount), Toast.LENGTH_SHORT).show();

}

6 个答案:

答案 0 :(得分:1)

Yout在调用您的活动时必须使用startActivityForResult(...),然后您可以在片段中onActivityResult()获取所需的任何信息。

答案 1 :(得分:1)

最有效的方法是在onPause和onResume之间切换。甚至不必打扰家长活动

private boolean allowRefresh = false;

@Override
    public void onResume() {
        super.onResume();
        //Initialize();
        if(allowRefresh){
            allowRefresh=false;
            //call your initialization code here
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if (!allowRefresh)
            allowRefresh = true;
    }

onResume总是在您的片段加载时被调用,因此allowRefresh的初始状态应该为false,这样片段不会被加载两次

在片段处于活动状态时打开新活动后,将调用onPause,仅在allowRefresh为false的情况下,将allowRefresh设置为true。

当片段重新获得焦点时,请检查allowRefresh是否为true并重做初始化。良好的代码习惯是将所有初始化代码放在一个函数中。

答案 2 :(得分:0)

你可以使用Bundle在Android中做同样的事情

创建意图:

Intent i = new Intent(this, ActivityTwo.class);
AutoCompleteTextView textView = (AutoCompleteTextView)    findViewById(R.id.autocomplete);
String getrec=textView.getText().toString();

//创建包

Bundle bundle = new Bundle();

//将您的数据添加到捆绑包中      bundle.putString(“stuff”,getrec);

//将包添加到意图

 i.putExtras(bundle);

//触发第二项活动

startActivity(i);

现在,在您的第二个活动中,从捆绑包中检索您的数据:

//获取包

Bundle bundle = getIntent().getExtras();

//提取数据......

String stuff = bundle.getString(“stuff”); 

您可以在此处参阅更多内容。POST

答案 3 :(得分:0)

您可以使用片段的onResume()方法

public class Fragment_ABC extends Fragment {
    View view;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.fragment_abc, container, false);
        return view;
    }

    @Override
    public void onResume() {
        super.onResume();

// PERFORM YOUR OPERATION OVER HERE
    }
}

如果这适合您,请告诉我! :)

答案 4 :(得分:0)

在你的片段中编写下面的代码并覆盖onActivityResult(int requestCode,int resultCode,Intent data)方法

            Intent intent = new  Intent(getApplicationContext(),TrendingQuestions.class);
        intent.putExtra("categoryId", Integer.parseInt(categoryId));
        startActivityForResult(intent, 101);

在获得结果后的下一个活动中,只需设置结果

Intent result = new Intent();
setResult(Activity.RESULT_OK, result);
finish();

如果没有调用onActivityResult,请检查this link

答案 5 :(得分:0)

然后做一件事..使用活动onResume方法,在其中显示片段,然后在此活动的OnResume中调用片段'要刷新片段的函数。

例如。 你有一个Activity_A,你​​在其中定义了片段,让它成为Fragemtn_A。现在,您将从此Fragment_A中导航到Activity_B。

现在当您离开Activity_B时,将确实调用Activity_A的onResume()方法,并且可以从Activity_A的onResume()调用Fragment_A的函数并执行您想要的操作。 p>

要通过活动调用任何片段的功能,您可以点击此链接: Calling a Fragment method from a parent Activity

如果这适合您,请告诉我! :)