传递活动和碎片之间的数据



我想使用捆绑包将数据从活动传递到片段(我使用捆绑包来传递2个片段之间的数据,并且有效)。在我的活动中,我有一个listView,在OnItemClickListener中,我想打开一个新片段,然后单击的项目通过该活动到此片段。但是该项目是无效的,因此基本上没有发送到片段。

这是我的活动:

public class Jegyek extends AppCompatActivity {
    View v;
    DB mydb;
    ListView listView;
    private String teszt;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_jegyek);

    listView = (ListView)findViewById(R.id.jegyekLista);
    mydb = new DB(this);
    final ArrayList<String> thelist = new ArrayList<>();
    Cursor data = mydb.getTantargynev();
    if (data.getCount() == 0) {
        Toast.makeText(this, "Nincs jegyek hozzáadva", Toast.LENGTH_SHORT).show();
    }
    else {
        while (data.moveToNext()) {
            thelist.add(data.getString(0));
            ListAdapter listadapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, thelist);
            listView.setAdapter(listadapter);
        }

        listView.setOnItemClickListener(
                new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                        teszt = thelist.get(i);
                        Bundle bundle = new Bundle();
                        bundle.putString("Tantárgy neve", teszt);
                        Toast.makeText(Jegyek.this, teszt, Toast.LENGTH_SHORT).show();
                        Fragment jegyekAllando = new jegyekAllando();
                        jegyekAllando.setArguments(bundle);
                        FragmentTransaction FragTan = getSupportFragmentManager().beginTransaction();
                        FragTan.replace(R.id.jegyekMenu, jegyekAllando);
                        ListView listaNezet = (ListView) findViewById(R.id.jegyekLista);
                        listaNezet.setVisibility(View.GONE);
                        FragTan.commit();
                    }
                }
        );
    }
}
public String getTanNev () {
    System.out.println("WARNING: "+ teszt);
    return teszt;
}

}

和我的片段:

    public class jegyekAllando extends Fragment {
        DB mydb;
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_jegyek_allando, container, false);
           Bundle bundle = new Bundle();
            String tanNev = bundle.getStrin
g("Tantárgy neve");
        Jegyek jegyAct = new Jegyek();
        String tanNevv = jegyAct.getTanNev();
        mydb = new DB(getActivity());
        String jegyAtlag =String.valueOf(mydb.JegyekAtlaga(tanNev));
        String jegyDarab =String.valueOf(mydb.JegyekDarabszama(tanNev));
        return rootView;
    }
    }

当我意识到捆绑包为NULL时,我尝试通过Getter传递该列表项目,因此我更改了片段代码:

 Jegyek jegyek = new Jegyek();
 String jegy = jegyek.getTanNev();

但这还不能解决我的问题,所以我回到了捆绑包,这也有一些问题,但我找不到它。令人兴奋的是,在我敬酒项目时,在OnItemClicklistener中,它是正确的,但是当我想在控制台中显示或传递到片段时,值为null。

从活动中您以:

的方式发送数据
Bundle bundle = new Bundle();
bundle.putString("edttext", "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("edttext");    
    return inflater.inflate(R.layout.fragment, container, false);
}

希望这有帮助

在片段" jegyekallando"中,您必须从increate()带有bundle data = getArguments()的字符串,但是您创建了新的捆绑包。

相关内容

  • 没有找到相关文章

最新更新