在Android中将活动数据发送到viewpager片段

时间:2015-06-15 16:50:43

标签: java android android-intent android-viewpager bundle

我有一个ViewPager,需要从前一个int中获取Activity个值EditText,其中包含两个int个值,这两个Fragment的值被放入两个 final EditText editText2 = (EditText) findViewById(R.id.posti); //EDIT TEXT BOX MENU POSTI final EditText editText = (EditText) findViewById(R.id.dialogText); // EDIT TEXT BOX POSTI ORARIO final FrameLayout editTextLayout = (FrameLayout) findViewById(R.id.frame_ordinazioni); //EDIT TEXT MENU BOX final Button button_conferma = (Button) findViewById(R.id.bottone_conferma); //BOTTONE MENU BOX editTextLayout.setVisibility(View.VISIBLE); button_conferma.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { final int numero_tavolo = Integer.parseInt(editText.getText().toString()); final int posti= Integer.parseInt(editText2.getText().toString()); Calendar calendar = Calendar.getInstance(); int hour = calendar.get(Calendar.HOUR); int minute = calendar.get(Calendar.MINUTE); //guide that I follow final Bundle bundle = new Bundle(); bundle.putInt("Tavoli",numero_tavolo); bundle.putInt("Posti",posti); PaniniMenuFragment fragobj = new PaniniMenuFragment(); fragobj.setArguments(bundle); } }); 变量。 我如何获取这些值并发送到public View onCreateView(final LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ View view=(View)inflater.inflate(R.layout.fragment_menupanini, container,false); ImageView iv = (ImageView) view.findViewById(R.id.panini_images); TextView tv=(TextView)view.findViewById(R.id.panini_ingredienti); TextView names=(TextView)view.findViewById(R.id.panini_names); Button ordina=(Button)view.findViewById(R.id.panini_ordina); TextView prezzo=(TextView)view.findViewById(R.id.panini_prezzo); final TavoloTable myDB=new TavoloTable(getActivity().getApplicationContext()); int imageId = getArguments().getInt(IMAGE_ID); final String panini_prezzo=getArguments().getString(STRING_PREZZO); int position = getArguments().getInt(POSITION); String StringIngredients=getArguments().getString(STRING_INGREDIENTS); final String StringName=getArguments().getString(STRING_NAME); iv.setImageResource(imageId); tv.setText(StringIngredients); names.setText(StringName); prezzo.setText(panini_prezzo); ordina.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { myDB.open(); Bundle bundle=new Bundle(); int numero_tavolo=bundle.getInt("Tavoli");; int numero_posti= bundle.getInt("Posti"); counter++; } }); } ?我尝试了捆绑和意图,但没有工作。

这是代码: 活动一:

{{1}}

ViewPager上的片段:

{{1}}

抱歉我的英语不好。

2 个答案:

答案 0 :(得分:0)

您是否尝试通过静态构造函数方法的参数传递这些值?

以下是一个例子:

public class YourFragment extends Fragment{

    private int numberOne, numberTwo;

    public static YourFragment(int numberOne, int numberTwo) newInstance{
        YourFragment fragment = new YourFragment();
        Bundle args = new Bundle();
        args.putInt("numberOne", numberOne);
        args.putInt("numberTwo", numberTwo);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle args = getArguments();
        if(args != null){
            this.numberOne = args.getInt("numberOne");
            this.numberTwo = args.getInt("numberTwo");
        }
    }

}

然后你只需要在你的活动上创建你的片段并调用它,就像这样:

YourFragment fragment = YourFragment.newInstance(numberOne, numberTwo);
getSupportFragmentManager().
    beginTransaction().
    replace(R.id.containerId, fragment).
    commit();

答案 1 :(得分:-1)

您可以使用bundle via intent将数据从Activity ONE发送到Activity TWO,并设置此片段的参数。

@ρяσѕρєяK在这里回答了如何将数据从活动发送到片段 - > Send data from activity to fragment in android

修改

您可以使用委派模式!

  

在软件工程中,委托模式是面向对象编程中的设计模式,其中对象不是执行其声明的任务之一,而是将该任务委托给关联的辅助对象。存在一个责任倒置,其中一个辅助对象(称为委托)负责为委托者执行任务。委托模式是构成其他软件模式的基本抽象模式之一,例如组合(也称为聚合),混合和方面。“ - 维基百科。

您可以返回具有这些值的对象。

示例:https://en.wikipedia.org/wiki/Delegation_pattern