Android 从活动获取片段的文本视图数据
我希望将数据从片段的textview字段传递给activity方法,后者将数据插入sqlite数据库 这是我的文本视图片段:Android 从活动获取片段的文本视图数据,android,Android,我希望将数据从片段的textview字段传递给activity方法,后者将数据插入sqlite数据库 这是我的文本视图片段: public class BandasFragment extends Fragment { private EditText et_codigo, et_nombre, et_genero, et_descripcion; @Override public View onCreateView(LayoutInf
public class BandasFragment extends Fragment {
private EditText et_codigo, et_nombre, et_genero, et_descripcion;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View vistaBandas = inflater.inflate(R.layout.fragment_bandas, container, false);
et_codigo = (EditText)vistaBandas.findViewById(R.id.txt_codigo);
et_nombre = (EditText)vistaBandas.findViewById(R.id.txt_nombre);
et_genero = (EditText)vistaBandas.findViewById(R.id.txt_genero);
et_descripcion = (EditText)vistaBandas.findViewById(R.id.txt_descripcion);
return vistaBandas;
}
}
这是我向SQlite数据库插入数据的活动的方法。所以我需要从这个方法通信到片段的TextView字段,或者从片段到这个方法的trasport数据
public void Registrar(View view){
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this, "administracion", null, 1);
SQLiteDatabase BaseDeDatos = admin.getWritableDatabase();
String codigo = et_codigo.getText().toString();
String nombre = et_nombre.getText().toString();
String genero = et_genero.getText().toString();
String descripcion = et_descripcion.getText().toString();
if(!codigo.isEmpty()){
ContentValues registro = new ContentValues();
registro.put("codigo", codigo);
registro.put("nombre", nombre);
registro.put("genero", genero);
registro.put("descripcion", descripcion);
BaseDeDatos.insert("banda", null, registro);
BaseDeDatos.close();
et_codigo.setText("");
et_nombre.setText("");
et_genero.setText("");
et_descripcion.setText("");
Toast.makeText(this,"Registro exitoso", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(this,"Debes llenar todos los campos",Toast.LENGTH_SHORT).show();
}
}
如果您的片段位于要发送数据的同一活动下,则只需在您的活动中创建一个新方法或更新您的注册器方法,并且您的片段已经是此活动的一部分,因此只需在片段中访问此方法并通过方法传递您的值。你的绷带碎片是这样的:
public class BandasFragment extends Fragment {
private EditText et_codigo, et_nombre, et_genero, et_descripcion;
RegistrarActivity registrarActivity;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View vistaBandas = inflater.inflate(R.layout.fragment_bandas, container, false);
et_codigo = (EditText)vistaBandas.findViewById(R.id.txt_codigo);
et_nombre = (EditText)vistaBandas.findViewById(R.id.txt_nombre);
et_genero = (EditText)vistaBandas.findViewById(R.id.txt_genero);
et_descripcion = (EditText)vistaBandas.findViewById(R.id.txt_descripcion);
registrarActivity = (RegistrarActivity) getActivity();
registrarActivity.getData(et_codigo.getText().toString(),
et_nombre.getText().toString(),
et_genero.getText().toString(),
et_descripcion.getText().toString());
return vistaBandas;
}
public class RegistrarActivity extends AppCompatActivity {
String codigo,nombre,genero,descripcion;
public void Registrar(View view){
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this, "administracion", null, 1);
SQLiteDatabase BaseDeDatos = admin.getWritableDatabase();
if(!codigo.isEmpty()){
ContentValues registro = new ContentValues();
registro.put("codigo", codigo);
registro.put("nombre", nombre);
registro.put("genero", genero);
registro.put("descripcion", descripcion);
BaseDeDatos.insert("banda", null, registro);
BaseDeDatos.close();
et_codigo.setText("");
et_nombre.setText("");
et_genero.setText("");
et_descripcion.setText("");
Toast.makeText(this,"Registro exitoso", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(this,"Debes llenar todos los campos",Toast.LENGTH_SHORT).show();
}
}
public void getData(String codigo,String nombre,String genero,String descripcion){
this.codigo = codigo;
this.nombre = nombre;
this.genero = genero;
this.descripcion = descripcion;
}
你的班级将是这样的:
public class BandasFragment extends Fragment {
private EditText et_codigo, et_nombre, et_genero, et_descripcion;
RegistrarActivity registrarActivity;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View vistaBandas = inflater.inflate(R.layout.fragment_bandas, container, false);
et_codigo = (EditText)vistaBandas.findViewById(R.id.txt_codigo);
et_nombre = (EditText)vistaBandas.findViewById(R.id.txt_nombre);
et_genero = (EditText)vistaBandas.findViewById(R.id.txt_genero);
et_descripcion = (EditText)vistaBandas.findViewById(R.id.txt_descripcion);
registrarActivity = (RegistrarActivity) getActivity();
registrarActivity.getData(et_codigo.getText().toString(),
et_nombre.getText().toString(),
et_genero.getText().toString(),
et_descripcion.getText().toString());
return vistaBandas;
}
public class RegistrarActivity extends AppCompatActivity {
String codigo,nombre,genero,descripcion;
public void Registrar(View view){
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this, "administracion", null, 1);
SQLiteDatabase BaseDeDatos = admin.getWritableDatabase();
if(!codigo.isEmpty()){
ContentValues registro = new ContentValues();
registro.put("codigo", codigo);
registro.put("nombre", nombre);
registro.put("genero", genero);
registro.put("descripcion", descripcion);
BaseDeDatos.insert("banda", null, registro);
BaseDeDatos.close();
et_codigo.setText("");
et_nombre.setText("");
et_genero.setText("");
et_descripcion.setText("");
Toast.makeText(this,"Registro exitoso", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(this,"Debes llenar todos los campos",Toast.LENGTH_SHORT).show();
}
}
public void getData(String codigo,String nombre,String genero,String descripcion){
this.codigo = codigo;
this.nombre = nombre;
this.genero = genero;
this.descripcion = descripcion;
}
}我们可以通过创建接口来访问片段文本视图中的数据,该接口是中介bw活动和片段
公共接口TestListener{
公共字符串侦听器(字符串结果;
}
public void onAttach(Context context) {
super.onAttach(context);
try {
mListener = (TestListener) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + e.getMessage());
}
}
3.在第4步中,您需要在活动中实现接口
public void listener(String result) {
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
}
您可以使用的可能的重复项,或。并查看一下。DataFromFragment'是抽象的;无法实例化-在步骤3中