0

ビューページャーで画像ギャラリーを作成しようとしています。しかし、私はエラーが表示されますメソッド 'show(android.support.v4.app.FragmentTransaction、java.lang.String)'を解決できませんnewFragment.show(ft, "slideshow");私はFragment Managerに関連した同様の質問を読んだことがありますが、私は初心者ですし、FragmentManagerではなくFragmentTransactionを使用しています。誰でも私にそれを解決するのを助けることができますか?メソッド 'show(android.support.v4.app.FragmentTransaction、java.lang.String)'を解決できません。

import android.app.Fragment; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.View; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.support.v7.widget.DefaultItemAnimator; 
import android.support.v7.widget.GridLayoutManager; 
import android.support.v7.widget.RecyclerView; 

import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonArrayRequest; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    private String TAG = MainActivity.class.getSimpleName(); 
    private static final String endpoint = "http://demos.vetbossel.in/ajson/image.json"; 
    private ArrayList<Image1> images; 
    private ProgressDialog pDialog; 
    private GalleryAdapter mAdapter; 
    private RecyclerView recyclerView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 

     pDialog = new ProgressDialog(this); 
     images = new ArrayList<>(); 
     mAdapter = new GalleryAdapter(getApplicationContext(), images); 

     RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(), 2); 
     recyclerView.setLayoutManager(mLayoutManager); 
     recyclerView.setItemAnimator(new DefaultItemAnimator()); 
     recyclerView.setAdapter(mAdapter); 

     recyclerView.addOnItemTouchListener(new GalleryAdapter.RecyclerTouchListener(getApplicationContext(), recyclerView, new GalleryAdapter.ClickListener() { 
      @Override 
      public void onClick(View view, int position) { 
       Bundle bundle = new Bundle(); 
       bundle.putSerializable("images", images); 
       bundle.putInt("position", position); 

       FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
       SlideshowDialogFragment newFragment = SlideshowDialogFragment.newInstance(); 
       newFragment.setArguments(bundle); 
       newFragment.show(ft,"tag"); 
      } 

      @Override 
      public void onLongClick(View view, int position) { 

      } 
     })); 

     fetchImages(); 
    } 

    private void fetchImages() { 

     pDialog.setMessage("Loading Images..."); 
     pDialog.show(); 

     JsonArrayRequest req = new JsonArrayRequest(endpoint, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d(TAG, response.toString()); 
         pDialog.hide(); 

         images.clear(); 
         for (int i = 0; i < response.length(); i++) { 
          try { 
           JSONObject object = response.getJSONObject(i); 
           Image1 image = new Image1(); 


           JSONObject url = object.getJSONObject("url"); 
           image.setSmall(url.getString("small")); 
           image.setMedium(url.getString("medium")); 
           image.setLarge(url.getString("large")); 


           images.add(image); 

          } catch (JSONException e) { 
           Log.e(TAG, "Json parsing error: " + e.getMessage()); 
          } 
         } 

         mAdapter.notifyDataSetChanged(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, "Error: " + error.getMessage()); 
       pDialog.hide(); 
      } 
     }); 

     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(req); 
    } 
} 
+0

追加 'import android.support.v4.app.Fragment; '?? –

+0

はい、私は今質問を更新しました@IntelliJAmiya –

+0

あなたは 'SlideshowDialogFragment'クラスのインポートを表示できますか? –

答えて

0

実際に問題があなたのSlideshowDialogFragmentクラスです。アンドロイドであなたのSlideshowDialogFragmentクラスとして2 DialogFragment

  1. android.support.v4.app.DialogFragment
  2. android.app.DialogFragment

は第二1を拡張がある、あなたはandroid.support.v4.app.FragmentTransactionを使用傾けます。

解決策はSlideshowDialogFragmentクラスになり、import android.app.DialogFragment;import android.support.v4.app.DialogFragment;に置き換えます。今はすべて正常に動作します。

+0

そうです、ありがとう:) –

1

このようにしてください。

Fragment fragment = new SlideshowDialogFragment(); 
    FragmentManager fm =getActivity().getSupportFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.replace(R.id.content_frame, fragment); 
    ft.commit(); 

    Bundle bundle = new Bundle(); 
    bundle.putSerializable("images", images); 
    bundle.putInt("position", position); 

fragment.setArguments(bundle); 
+0

mDatasetとは何ですか? –

+0

私のコード@Amyを編集しました。それを見て、適用し、upvoteを忘れずに私の答えをチェックしてください –

0

あなたのクラスのトップにはどのような輸入品がありますか?あなたはそのよう android.support.v4.app.Fragment;android.support.v4.app.FragmentTransaction;をインポートする必要があります。

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentTransaction; 
+0

私はそれらの両方をインポートしています、私は今質問を更新しました –

+0

あなたのクラスの一番上にインポートimport android.app.Fragment; android.support.v4.app.Fragmentの代わりに。 – lidkxx

+0

@Amy 'import android.app.Fragment;を削除します。 –

関連する問題