我是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();
}
答案 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
如果这适合您,请告诉我! :)