2017-05-25 23 views
0

私はこの質問が何百万回も前に尋ねられたことを知っていますが、私が見つけることができるすべての解決策を試したが、仕事はありません。私はコンテキストのために "this"を呼び出すことを試みました、私はgetActivityを試みました、私はgetContext()を試しましたが、特にこのフラグメントのためにはうまくいかないようです。同じコードが別の断片で動作するので、私は本当に混乱しています。どんな助けもありがたい。コンストラクタを解決できませんArrayAdapter(android.Content.Context.Context、int、java.util.ArrayList <MyObject>)

マイLoginFragment、私の問題は、(setReservationsで見つけることができます):

public class LoginFragment extends Fragment { 
    LoginButton loginButton; 
    TextView nameText; 
    ProfileTracker mProfileTracker; 
    DBHandler dbHandler; 
    Context context; 
    ArrayList<Reservation> reservations; 
    ListView lv; 
    Profile fbProfile; 

    CallbackManager callbackManager; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.login, container, false); 
     callbackManager = CallbackManager.Factory.create(); 
     dbHandler = new DBHandler(getContext(), null, null, 1); 
     context = getActivity(); 
     loginButton = (LoginButton) view.findViewById(R.id.login_button); 
     nameText = (TextView) view.findViewById(R.id.users_name); 
     loginButton.setReadPermissions("email"); 
     setmProfileTracker(); 
     mProfileTracker.startTracking(); 
     // If using in a fragment 
     loginButton.setFragment(this); 
     // Other app specific specialization 

     // Callback registration 
     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 

      } 

      @Override 
      public void onCancel() { 
       // App code 
      } 

      @Override 
      public void onError(FacebookException exception) { 
       // App code 
      } 
     }); 

     return view; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     fbProfile = Profile.getCurrentProfile(); 
     if (fbProfile != null) 
     { 
      updateUI(); 
     } 
     getActivity().setTitle("My page"); 
    } 


    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode,resultCode,data); 
    } 

    private void setmProfileTracker() 
    { 
     mProfileTracker = new ProfileTracker() { 
      @Override 
      protected void onCurrentProfileChanged(Profile profile, Profile profile2) { 
       updateUI(); //this is the third piece of code I will discuss below 
      } 
     }; 
    } 

    private void updateUI() { 

     boolean enableButtons = AccessToken.getCurrentAccessToken() != null; 
     if (fbProfile == null) { 
      fbProfile = Profile.getCurrentProfile(); 
      Log.e("Profile", "null"); 
     } 
     if (enableButtons && fbProfile != null) { 
      Log.e("Access Token", AccessToken.getCurrentAccessToken().toString()); 
      nameText.setText(fbProfile.getName()); 
     } 
    } 

    private void setReservations() 
    { 
     reservations = dbHandler.userReservationToArrayList(parseLong(fbProfile.getId())); 

     lv = (ListView) getView().findViewById(R.id.reservations); 

     ArrayAdapter<Review> arrayAdapter = new ArrayAdapter<Review>(
      context, 
      android.R.layout.simple_list_item_1, 
      reservations); 

     lv.setAdapter(arrayAdapter); 
    } 
} 

EDIT:コードフォーマット

答えて

1

おそらく、ジェネリック医薬品と型の安全性についての詳細を学ぶ必要があります。

reservationsのタイプがArrayList<Reservation>ですが、ArrayAdapter<Review>を作成しようとすると間違っています。それをArrayAdapter<Reservation>に変更します。

+0

おかげで、できるだけ早く答えを受け入れます。 –

2

あなたArrayアダプタは、Typeレビュー

ArrayAdapter<Review> arrayAdapter 

しかし、あなたの通過は次のとおりです。

ArrayList<Reservation> reservations 
Change it to ArrayAdapter<Reservation> 
0

あなたはReservationReviewない配列の配列を渡す必要があります。アダプタをArrayAdapter<Reservation>に変更してください。

また、onCreateView()メソッド内でgetActivity()メソッドを呼び出すと、Activityがまだ作成されていないため、エラーが発生する可能性があります。 は、この問題を解決するために、あなたはあなたのonActivityCreated()に次の行を移動する必要があります。

@Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     context = getActivity(); 
    } 
関連する問題