2016-06-15 2 views
0

Как выбрать метод, называемый «добавили в избранное» через файл макета XML с помощью метода XMLКак выбрать метод android для Android?

android:onClick 

?

метод «добавили в избранное» находится здесь:

tk.talcharnes.popularmovies.MovieDetailsFragment 

Я пробовал много вещей, но ничего не работает!

Вот код для Избраного

/** 
* A placeholder fragment containing a simple view. 
*/ 
public class MovieDetailsFragment extends Fragment { 

public MovieDetailsFragment() { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_movie_details, container, false); 

    //get movie object in order to extract details 
    Intent intent = getActivity().getIntent(); 
    int movie_number = intent.getIntExtra("Movie_number", 0); 
    MovieModel movie = PostersFragment.getMovieModelList().get(movie_number); 

    //set title in details view 
    TextView titleView = (TextView) rootView.findViewById(R.id.movie_details_text); 
    titleView.setText(movie.getTitle()); 

    //set poster into details view 
    ImageView poster = (ImageView)rootView.findViewById(R.id.poster); 
    Picasso.with(getContext()).load(movie.getPoster_path()).placeholder(R.drawable.temp_poster).into(poster); 

    // set movie year in details view 
    TextView release_date = (TextView)rootView.findViewById(R.id.release_date); 
    if(movie.getRelease_date().length() > 3){ 
    release_date.setText(movie.getRelease_date().substring(0,4));} 
    else if (movie.getRelease_date() == null){ 
     release_date.setText("Release date not available"); 
    } 
    else{ 
     release_date.setText((movie.getRelease_date())); 
    }; 

    //set vote average in details view 
    TextView vote_average = (TextView) rootView.findViewById(R.id.vote_average); 
    vote_average.setText(movie.getVote_average() + " /10"); 

    //set overview in details view 
    TextView overview = (TextView) rootView.findViewById(R.id.overview); 
    overview.setText(movie.getOverview()); 


    return rootView; 
} 
public void favorited(){ 
    CheckBox favorited = (CheckBox) getView().findViewById(R.id.favorite); 
    if (favorited.isChecked()){ 

     Toast.makeText(getContext(), "ITS CHECKED", Toast.LENGTH_SHORT).show(); 
    } 
} 

} 
+1

Возможный дубликат [Как обрабатывать нажатия кнопок с помощью XML onClick внутри фрагментов] (http://stackoverflow.com/questions/6091194/how-to-handle-button-clicks-using-the-xml-onclick-within- фрагменты) –

ответ

1

если вы объявили android:onClick="favorited" в вашем XML необходимо реализовать следующий метод в активности фрагмент находится в:

public void favorited(View view) { 
    //handle click 
} 

Важно: метод должен быть в своей деятельности. Вы можете найти больше информации at this answer

+1

Нет, вам нужно поставить метод, который обрабатывает щелчок в правильном действии. – Katharina

+0

ahhhh ok, это имеет смысл, спасибо! –

0

Try ниже кода

<?xml version="1.0" encoding="utf-8"?> 
<!-- layout elements --> 
<Button android:id="@+id/btn_favorite" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Click me!" 
    android:onClick="favorited" /> 
+0

Так что это не сработает, если я поместил его в фрагмент? Или я просто испортил фрагмент, как он работал, как только я переместил его в другое место! Также спасибо за помощь !!! –

0

В вашей точке зрения XML указать метод OnClick, как это:

<Button android:id="@+id/mybutton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Click me!" 
    android:onClick="favorited" /> 

, а затем в вашем фрагменте определить метод следующим образом:

public void favorited(View v) { 
    // does something very interesting 
} 

Помните, что без favorited(View v) ваш метод не вызывается из xml.

+0

Так что это не сработает, если я поместил его в фрагмент? Или я просто испортил фрагмент, как он работал, как только я переместил его в другое место! Также спасибо за помощь !!! –

+1

нет, он не будет работать для фрагмента ... для использования фрагмента под кодом: Button button = (Button) view.findViewById (R.id.btn_conferma); button.setOnClickListener (новый OnClickListener() { @Override общественный недействительный OnClick (View v) { // сделать что-то } }); –

0

Использовать onClick listener вместо объявления xml click: в вашем объявлении объявления xml для интерактивного элемента.

<Button android:id="@+id/btn_favorite" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

И в вашем фрагменте

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_movie_details, container, false); 

    Button faw = (Button) rootView.findViewById(R.id.favorite); 
    faw.setOnclickListener(new View.OnClickListener(){ 
     @Override 
     onClick(){ 
      favorited(); //or do another action 
     } 
     }); 
    } 

Этот метод лучше для повторного использования и большей безопасности

0

добавить это в XML

android:onClick="ButtonClick" 

и это в коде

public void ButtonClick(View v) { 
favorited(); 
} 

вы можете также добавить несколько кнопок к тому же методу ButtonClick, просто добавьте это там:

switch (v.getId()) { 
    case R.id.button1: 
    doSomething1(); 
    break; 
} 

все это и многое другое доступно повсюду, хотя, вот к примеру: Android OnClickListener - identify a button

Смежные вопросы