2016-06-15 12 views
0

どのように私はアンドロイドメソッドを選択するにはどうすればいいですか?

android:onClick 

XMLメソッドを使用してXMLレイアウトファイルを介して、「お気に入りに登録しました」と呼ばれる方法を選ぶのですか?

「お気に入りに登録しました」の方法は次の場所にあります。私は多くのことを試してみましたが、何も動作

tk.talcharnes.popularmovies.MovieDetailsFragment 

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

してからの断片で定義:ここで

/** 
* 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

可能な複製(http://stackoverflow.com/questions/6091194/how-to-handle-button-clicks-using-the-xml-onclick-within- [フラグメント内のXMLのonClickを使用して、ボタンのクリックを処理する方法]フラグメント) –

答えて

1

あなたがXMLでandroid:onClick="favorited"を宣言した場合は、活動フラグメントで次のメソッドを実装する必要がでている方法は、活動にする必要があります。詳細はこちらat this answer

+1

いいえクリックを処理するメソッドを正しいアクティビティに配置する必要はありません – Katharina

+0

ああこれは意味があります、ありがとう! –

0

をお気に入りに追加すると、このようなのonClickメソッドを指定してXMLビューでコード

<?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

の下に試してみてくださいためのコードですこのような方法:

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

は、あなたのメソッドは、XMLから呼び出されることはありませんfavorited(View v)ずに覚えておいてください。

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

重要

+0

それを断片化してもうまくいきませんか?それとも、私がそれを他の場所に移したら、うまくいったように、断片を台無しにしましたか?また、助けてくれてありがとう! –

+1

いいえフラグメントのためには機能しません...コードの下のフラグメントの使用:Button button =(Button)view.findViewById(R.id.btn_conferma); button.setOnClickListener(新OnClickListener(){ @Override ます。public void onClickの(ビューV) {// が何か } を行います}); –

0

xmlクリック宣言の代わりにonClick listenerを使用してください: クリック可能な要素へのxml広告ID。

<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

関連する問題