2014-01-09 2 views
0

Я хочу передать определенные значения из активности в фрагмент в android. Вот код: -Передача значений из активности в фрагмент андроида

MainActivity: -

PlaceDialogFragment dialogFragment = new PlaceDialogFragment(place,dm); 

Фрагмент: -

public PlaceDialogFragment(Place place, DisplayMetrics dm){ 
     super(); 
     this.mPlace = place; 
     this.mMetrics = dm; 
    } 

Используя конструктор во фрагменте дает мне ошибку: -

Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead 

Если я заменил конструктор на: -

public static final DialogFragment newInstance(Place place, DisplayMetrics dm) 
{ 
    DialogFragment fragment = new DialogFragment(); 
    Bundle bundle = new Bundle(2); 
    bundle.putParcelable("Place", place); 
    bundle.putFloat("Metrics", dm.density); 
    fragment.setArguments(bundle); 
    return fragment ; 
} 

Я получаю сообщение об ошибке в MainActivity.Java: -

The constructor PlaceDialogFragment(Place, DisplayMetrics) is undefined 

Как я решить эту проблему?

+0

фрагменты не должны иметь ARG конструктор. alex ответил на ваш вопрос. посмотрите @ http://developer.android.com/reference/android/app/DialogFragment.html – Raghunandan

ответ

1

Измените свою активность, чтобы использовать новый метод.

PlaceDialogFragment dialogFragment = PlaceDialogFragment.newInstance(place, dm); 
+0

Вы внимательно следили за учебниками по картам. Если вы не можете это решить, создайте новый вопрос, поскольку он не связан с этим. – alex

1

Вы можете сделать это таким образом:

From Activity you send data with intent as: 

Bundle bundle = new Bundle(); 
bundle.putString("edttext", "From Activity"); 
// set Fragmentclass Arguments 
Fragmentclass fragobj = new Fragmentclass(); 
fragobj.setArguments(bundle); 

и фрагмента методом onCreateView:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    String strtext = getArguments().getString("edttext");  
    return inflater.inflate(R.layout.fragment, container, false); 
} 
Смежные вопросы