我想将片段的textview字段中的数据传递给活动方法,该方法将数据插入sqlite数据库。
这是我的TextView片段:
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字段进行通信,或将数据从片段传输到此方法。
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();
}
}
答案 0 :(得分:1)
我们可以通过创建界面来访问片段文本视图中的数据,该界面是调解员bw活动和片段
首先,您需要使用方法创建一个接口。(DataFromFragment.java)
public interface TestListener {
public String listener(String result;
}
2。第三步,您需要在Fragment中重写onAttach方法,在该方法中,我们将获得父活动上下文。这样我们就可以直接获取接口方法。
public void onAttach(Context context) {
super.onAttach(context);
try {
mListener = (TestListener) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + e.getMessage());
}
}
3。在第四步中,您需要在活动中实施接口。
public void listener(String result) {
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
}
第五步,从片段方法调用接口方法。
public void returnData(){ mListener.listener(“ Ashok”); }
最终从活动中调用returndata()方法以从片段中获取结果
FragmentManager fm = getFragmentManager(); BlankFragment f2 =(BlankFragment)fm.findFragmentById(R.id.fragment); f2.returnData();
答案 1 :(得分:0)
如果您的片段处于您要发送数据的同一活动下,则只需在该活动中创建一个新方法或更新您的Registrar方法,而您的片段已成为该活动的一部分,因此只需在片段中访问此方法并传递您的方法的价值。您的BandasFragment将像这样:
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;
}
}