2016-06-09 42 views
0

Ich versuche eine Schaltfläche innerhalb einer Registerkarte zu haben, die Teil einer Aktivität zum Hochladen von Bildern ist, wenn Sie auf die Schaltfläche in einer der beiden in der Aktivität angezeigten Registerkarten klicken (Registerkarte 1 Bilder, Tab 2 Vid) kann der Benutzer ein Bild vom Gerät auswählen.So implementieren Sie onActivityResult in RecyclerView Fragment

Mein Problem besteht darin, den onClick Listener und onActivityResult zu implementieren, der nicht verwendet wird, wenn er nach onClick platziert wird, plus der @Override wird als ein Fehler unterstrichen.

Ich denke, ich bin nicht implementieren die OnClick den richtigen Weg und nicht sicher, wie onActivityResult den richtigen Weg zu aktivieren, würde ich mich freuen, jede Anleitung;

MainActivity;

public class upload extends AppCompatActivity { 

public String UserID; 
private static final int REQUEST_SIGNUP = 0; 

private DrawerLayout mDrawerLayout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.upload); 
    Firebase.setAndroidContext(this); 

    // Adding Toolbar to Main screen 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    // Setting ViewPager for each Tabs 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 
    // Set Tabs inside Toolbar 
    TabLayout tabs = (TabLayout) findViewById(R.id.tabs); 
    tabs.setupWithViewPager(viewPager); 
} 
    private void setupViewPager(ViewPager viewPager) { 
    Adapter adapter = new Adapter(getSupportFragmentManager()); 
    adapter.addFragment(new UploadPictures(), "Pictures"); 
    adapter.addFragment(new UploadVideos(), "Videos"); 
    viewPager.setAdapter(adapter); 
} 

static class Adapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public Adapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

Und hier ist der Fragment Code;

public class UploadPictures extends android.support.v4.app.Fragment { 
    @Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    final RecyclerView recyclerView = (RecyclerView) inflater.inflate(
      R.layout.recycler_view, container, false); 
    ContentAdapter adapter = new ContentAdapter(recyclerView.getContext()); 
    recyclerView.setAdapter(adapter); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

    return recyclerView; 

} 

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    public ImageView picture; 
    public EditText tagEditText; 
    public Button tagCurLoc, choosePic, uploadContent; 


    public ViewHolder(LayoutInflater inflater, ViewGroup parent) { 
     super(inflater.inflate(R.layout.pictue_upload, parent, false)); 

     picture = (ImageView) itemView.findViewById(R.id.imgToUpload); 
     tagEditText = (EditText) itemView.findViewById(R.id.tagEditText); 
     tagCurLoc = (Button) itemView.findViewById(R.id.tagCurLoc); 
     choosePic = (Button) itemView.findViewById(R.id.choosePic); 
     choosePic.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(galleryIntent, RESULT_LOAD_IMAGE); 

      } 

      protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
       if (data == null) { 
        onActivityResult(requestCode, resultCode, data); 
        Toast.makeText(getActivity().getApplicationContext(), "Canceled ", Toast.LENGTH_SHORT).show(); 


       } else { 
        if (requestCode == RESULT_LOAD_IMAGE) { 
          Uri selectedImgPath = data.getData(); 
          picture.setImageURI(selectedImgPath); 
          RealFilePath = Uri.parse(String.valueOf(selectedImgPath)); 
          Toast.makeText(getActivity().getApplicationContext(), " " + RealFilePath, Toast.LENGTH_SHORT).show(); 
        } 
       } 
      } 
     }); 

     uploadContent = (Button) itemView.findViewById(R.id.uploadContent); 
    } 
} 



/** 
* Adapter to display recycler view. 
*/ 
public class ContentAdapter extends RecyclerView.Adapter<ViewHolder> { 
    // Set numbers of List in RecyclerView. 

    private Context mContext; 

    public ContentAdapter(Context context) { 

     this.mContext = context; 
    } 



    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     return new ViewHolder(LayoutInflater.from(parent.getContext()), parent); 
    } 

    @Override 
    public void onBindViewHolder(final ViewHolder holder, int position) { 

    } 

    @Override 
    public int getItemCount() { 
     return LENGTH; 
    } 

} 

nicht sicher, ob die onClick Listener für die Schaltfläche in dem Adapter oder dem View Halter implementiert werden und von dort aus der Frage der onActivityResult kippt verwendet werden?

Antwort

0

Weel, nach einigem Lesen und wenigen Versuchen gelöst.

Der onClick Zuhörer sollte von

@Override 
    onActivityResult. 

innerhalb der OnClickListener onActivityResult aufgerufen, gefolgt von an der ViewHolder Klasse implementiert werden;

startActivityForResult(intent, RESULT_LOAD_IMAGE); 

und innerhalb onActivityResult;

onActivityResult(requestCode, resultCode, data); 

Angesichts all dieser in einer Aktivität statt Fragment.

Verwandte Themen