如何使用 getSupportFragmentManager 将包传递到片段中?
How to pass bundle into fragment using getSupportFragmentManager?
我有一个 activity,它从另一个 activity 接收一个包。该包是一个简单的 url 字符串。接收 activity 使用 getSupportFragmentManager
启动片段,如下所示,这按预期工作。
我想将 url 字符串传递给片段,但找不到执行此操作的方法。我见过的所有示例都使用不同的模式来启动片段。任何建议表示赞赏!
请参阅我的评论,了解为什么这与另一个问题不完全相同。
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;
public class GalleryActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#273134")));
//Get the URL string from the calling activity
String url = super.getIntent().getExtras().getString("urlString");
Toast.makeText(this, "URL String is: " + url, Toast.LENGTH_LONG).show();
/*
Here is a new bundle. How do we get this passed to the new fragment?
Bundle bundle = new Bundle();
bundle.putString("url", url);
*/
getSupportFragmentManager()
.beginTransaction()
.add(R.id.content, RecyclerViewFragment.newInstance())
.commit();
}
}
您可以在片段实例上使用 setArguments
在片段中设置包。您可以在 docs 中找到更多信息。
例如:
Fragment fragment = RecyclerViewFragment.newInstance();
Bundle bundle = new Bundle();
bundle.putString("url", url);
fragment.setArguments(bundle);
getSupportFragmentManager()
.beginTransaction()
.add(R.id.content, fragment)
.commit();
并在您的 onCreate
或 onCreateView
片段中使用:
String url = getArguments().getString("url")
Whosebug 中已回答的问题:setArguments - getArguments
我有一个 activity,它从另一个 activity 接收一个包。该包是一个简单的 url 字符串。接收 activity 使用 getSupportFragmentManager
启动片段,如下所示,这按预期工作。
我想将 url 字符串传递给片段,但找不到执行此操作的方法。我见过的所有示例都使用不同的模式来启动片段。任何建议表示赞赏!
请参阅我的评论,了解为什么这与另一个问题不完全相同。
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;
public class GalleryActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(Color.parseColor("#273134")));
//Get the URL string from the calling activity
String url = super.getIntent().getExtras().getString("urlString");
Toast.makeText(this, "URL String is: " + url, Toast.LENGTH_LONG).show();
/*
Here is a new bundle. How do we get this passed to the new fragment?
Bundle bundle = new Bundle();
bundle.putString("url", url);
*/
getSupportFragmentManager()
.beginTransaction()
.add(R.id.content, RecyclerViewFragment.newInstance())
.commit();
}
}
您可以在片段实例上使用 setArguments
在片段中设置包。您可以在 docs 中找到更多信息。
例如:
Fragment fragment = RecyclerViewFragment.newInstance();
Bundle bundle = new Bundle();
bundle.putString("url", url);
fragment.setArguments(bundle);
getSupportFragmentManager()
.beginTransaction()
.add(R.id.content, fragment)
.commit();
并在您的 onCreate
或 onCreateView
片段中使用:
String url = getArguments().getString("url")
Whosebug 中已回答的问题:setArguments - getArguments