我有一个片段和一个活动,活动有3个编辑文本和一个图像。您可以从您的设备上传图像。但要知道,我正在尝试连接两个片段,并将活动B中的所有信息传递给片段A。
片断有一个编辑配置文件的按钮,3个TextView和一个ImageView,如果你点击这个按钮,你就会转到活动,在那里你有3个编辑文本(名称,电子邮件和描述),你有一个从你的设备上传图像的按钮。和保存更改的last按钮。
我想用save按钮保存更改,并将edittext和图像的信息给片段。
我在爪哇做的事。
片段文件
public class NotificationFragment extends Fragment {
private static String name;
private static String mail2;
private static String des;
Button btnclose;
Button btnedit;
Button btnDisponibles;
Button btnFinalizadas;
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public NotificationFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment HomeFragment.
*/
String name2;
String e_mail;
String description;
// TODO: Rename and change types and number of parameters
public static NotificationFragment newInstance(String param1, String param2) {
NotificationFragment fragment = new NotificationFragment();
Bundle args = new Bundle();
args.putString(name, param1);
args.putString(mail2, param2);
args.putString(des,"");
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
name2 = getArguments().getString("name");
e_mail = getArguments().getString("email");
description = getArguments().getString("descripcion");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_notification, container, false);
TextView nombre, email, descripcion;
nombre = (TextView) view.findViewById(R.id.txtNombre);
email = (TextView) view.findViewById(R.id.txtemail);
descripcion = (TextView) view.findViewById(R.id.txtdescripcion);
nombre.setText(name);
email.setText(e_mail);
descripcion.setText(description);
btnedit = (Button) view.findViewById(R.id.btneditar);
btnedit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editar();
}
});
return view;
}
public class editarperfil extends AppCompatActivity {
ImageView imagen;
Button btnchange;
Button btnout;
EditText editNombre;
EditText editEmail;
EditText ediDescripcion;
String name;
String e_mail;
String description;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_editarperfil);
imagen = (ImageView) findViewById(R.id.imagenId);
btnchange = (Button) findViewById(R.id.btnImagen);
btnchange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cargarimagen();
}
});
btnout = (Button) findViewById(R.id.btnGuardar);
btnout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
salir();
}
});
}
private void cargarimagen(){
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/");
startActivityForResult(intent.createChooser(intent, "Seleccione la aplicación"), 10);
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Uri path=data.getData();
imagen.setImageURI(path);
}
private void salir()
{
Bundle bundle = new Bundle();
bundle.putString("name", editNombre.getText().toString());
bundle.putString("email", editEmail.getText().toString());
bundle.putString("descripcion", ediDescripcion.getText().toString()); // Put anything what you want
NotificationFragment fragment2 = new NotificationFragment();
fragment2.setArguments(bundle);
}
从一个活动中,您可以将数据发送到一个片断,其目的是:
Bundle bundle = new Bundle();
bundle.putString("message", "From Activity");
// Set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
并在fragment onCreateView方法中接收片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("message");
return inflater.inflate(R.layout.fragment, container, false);
}
此方法也适用于多个片段。只需使用setarguments()
方法。
您还可以使用第三个库在活动和片段之间传输数据,如EventBus:https://github.com/greenrobot/eventBus
我有个错误 //类别2是片段
我已经完成了导航,现在进入第一个片段。在第一个片段中有两个按钮,我需要通过按下这些按钮来切换到一个新的活动。我不明白如何正确地实施它。我犯了一个错误。 代码,eror
我想在Android的一个活动中添加两个片段。但在加法时,它给出了错误; activity_main.xml 片段的布局1 片段2的布局
我有一个疑问,想澄清一些关于包含多个片段的活动的观点。 我有10个片段与一个活动(HomeActivity.java)相连;此活动包含一个导航抽屉和工具栏,带有多个图标,如搜索、添加、删除、后退按钮等。 我遵循的结构如下:, 用户点击抽屉菜单中的任何项目,我正在加载片段, 碎片加载- 我正在根据HomeActivity本身中的片段更改标题名称,基于工具栏。 我的导航抽屉项目只有一个片段,在frag
我想按下mainactivity中的一个按钮,该按钮将启动一个包含片段的新活动的意图。我写了一个主要的活动。带有main活动和第二个_活动按钮的xml。带有片段的xml。当我单击按钮时,第二个活动将由于xml中的片段而崩溃。我已经添加了一个标志,但它没有帮助。该应用程序的想法是通过按下主活动中的按钮,在第二个活动中获取谷歌地图。 我希望你能帮助我:/ 主要活动: 亚活性: activity_mai
我也看了这段视频,并阅读了以下问题: > 共享ViewModel以帮助片段和父活动之间的通信 从另一个片段调用fragmentMethod,但不能在ParentFragmentActivity的视图分页器中引用它们 “我的上帝”对这个问题的答复很有帮助,但我仍然不确定在我的情况下做什么是最好的事情,因为我有一个用户可以输入数据的片段,而相同的片段也应该查看数据作为输入的结果。(也许我的第一个错误是