gpt4 book ai didi

android - 如何从另一个 fragment 调用一个 fragment ?

转载 作者:行者123 更新时间:2023-11-29 23:41:58 24 4
gpt4 key购买 nike

我在我的 fragment 中设置了一个 facebook 登录产品,我将图形请求发送到收到数据后从 graph api 获取一些数据我想转到不同的 fragment 来处理结果但是点击登录按钮我仍然在同一个 Activity 中只有登录按钮被更改为注销按钮这意味着点击监听器是工作。如果我尝试使用 Intent 进入一个 Activity ,它工作正常,新 Activity 得到显示,但我需要转到我的 fragment ,我该怎么做,这是我的代码?

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

loginButton?.setOnClickListener({

callbackManager = CallbackManager.Factory.create()
loginButton?.setFragment(this)
// loginButton = view.findViewById(R.id.log)

loginButton?.setReadPermissions("email")
loginButton?.registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
override fun onSuccess(loginResult: LoginResult) {

val request: GraphRequest = GraphRequest.newMeRequest(loginResult.getAccessToken()
, GraphRequest.GraphJSONObjectCallback { `object`, response ->
// Override fun onCompleted( `object`:JSONObject, response:GraphResponse) {
Log.e(TAG, `object`.toString())
Log.e(TAG, response.toString())

try {
userId = `object`.getString("id");
profilePicture = URL("https://graph.facebook.com/" + userId + "/picture?width=500&height=500");
if (`object`.has("first_name"))
firstName = `object`.getString("first_name");
if (`object`.has("last_name"))
lastName = `object`.getString("last_name");
if (`object`.has("email"))
email = `object`.getString("email");
if (`object`.has("birthday"))
birthday = `object`.getString("birthday");
if (`object`.has("gender")) {
gender = `object`.getString("gender")
}


/* var main:Intent = Intent(this@MainActivity, Display::class.java)
main.putExtra("name", firstName)
main.putExtra("surname", lastName)
main.putExtra("imageUrl",profilePicture.toString())
startActivity(main);
finish(); */
mainFrameFragment = MainFrameFragment()
parameters?.putString("name", firstName)
parameters?.putString("surname", lastName)
parameters?.putString("imageUrl",profilePicture.toString())
mainFrameFragment?.arguments = parameters
fragmentManager?.beginTransaction()
?.replace(R.id.displayFragment, mainFrameFragment as MainFrameFragment,"MainFrameFragment")
?.commit()

// moveToNewActivity()

} catch (e: JSONException) {
e.printStackTrace();
} catch (e: MalformedURLException) {
e.printStackTrace();
}// App code
})
// mainFrameFragment = MainFrameFragment()
parameters = Bundle()
parameters?.putString("fields", "id, first_name, last_name, email, birthday, gender")
request.setParameters(parameters)
request.executeAsync()
}

override fun onCancel() {
// App code
}

override fun onError(exception: FacebookException) {
// App code
}
})
})
}

最佳答案

如果你想用 Fragment2 替换整个 Fragment1,你需要在 MainActivity 中使用:

Fragment1 fragment2 = new Fragment2();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(android.R.id.content, fragment2);
fragmentTransaction.commit();

只需将这段代码放在 MainActivity 的一个方法中,然后从 Fragment1 调用该方法。

关于android - 如何从另一个 fragment 调用一个 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51754136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com