Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从活动获取片段的文本视图数据_Android - Fatal编程技术网

Android 从活动获取片段的文本视图数据

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

我希望将数据从片段的textview字段传递给activity方法,后者将数据插入sqlite数据库

这是我的文本视图片段:

    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{
    公共字符串侦听器(字符串结果;
    }

  • 2.在第三步中,您需要在该方法的片段中重写onAttach方法,我们将获取父活动上下文。所以我们可以直接获取接口方法

       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();
    }
    
  • 在第五步中,从片段方法调用接口方法

    公共数据(){ mListener.listener(“Ashok”); }

  • 最后从活动中调用returndata()方法以从片段中获取结果

    FragmentManager fm=getFragmentManager(); BlankFragment f2=(BlankFragment)fm.findFragmentById(R.id.fragment); f2.返回数据()


  • 您可以使用的可能的重复项,或。并查看一下。DataFromFragment'是抽象的;无法实例化-在步骤3中