2017-12-05 4 views
-1

3 개의 탭이있는 Android 앱을 개발 중입니다. 주문 상태, 주문 세부 정보, 주문 정보. 내 응용 프로그램에 단편을 추가하려고하면 오류 메시지가 표시됩니다. 여기 내 코드입니다 :탭 활동 Android

orderTabbedFraagment.java

package com.example.kamran.bluewhite; 

import android.support.design.widget.TabLayout; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 

import android.widget.TextView; 

public class OrderInfoTabbed extends AppCompatActivity { 

    /** 
    * The {@link android.support.v4.view.PagerAdapter} that will provide 
    * fragments for each of the sections. We use a 
    * {@link FragmentPagerAdapter} derivative, which will keep every 
    * loaded fragment in memory. If this becomes too memory intensive, it 
    * may be best to switch to a 
    * {@link android.support.v4.app.FragmentStatePagerAdapter}. 
    */ 
    private SectionsPagerAdapter mSectionsPagerAdapter; 

    /** 
    * The {@link ViewPager} that will host the section contents. 
    */ 
    private ViewPager mViewPager; 

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

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     // Create the adapter that will return a fragment for each of the three 
     // primary sections of the activity. 
     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

     // Set up the ViewPager with the sections adapter. 
     mViewPager = (ViewPager) findViewById(R.id.container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(mViewPager); 



    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_order_info_tabbed, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 
     /** 
     * The fragment argument representing the section number for this 
     * fragment. 
     */ 
     private static final String ARG_SECTION_NUMBER = "section_number"; 

     public PlaceholderFragment() { 
     } 

     /** 
     * Returns a new instance of this fragment for the given section 
     * number. 
     */ 
     public static PlaceholderFragment newInstance(int sectionNumber) { 
      PlaceholderFragment fragment = new PlaceholderFragment(); 
      Bundle args = new Bundle(); 
      args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
      fragment.setArguments(args); 
      return fragment; 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.fragment_order_info_tabbed, container, false); 
      TextView textView = (TextView) rootView.findViewById(R.id.section_label); 
      textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER))); 
      return rootView; 
     } 
    } 

    /** 
    * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
    * one of the sections/tabs/pages. 
    */ 
    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     public SectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      switch (position){ 
       case 0: 
        orderInfoFragment a = new orderInfoFragment(); 
        return a; 
      } 
     } 

     @Override 
     public int getCount() { 
      // Show 3 total pages. 
      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      switch (position) { 
       case 0: 
        return "Order Details"; 
       case 1: 
        return "Order Info"; 
       case 2: 
        return "Order Status"; 

      } 
      return null; 
     } 
    } 
} 

orderInfoFragment의 된 .java

package com.example.kamran.bluewhite; 

import android.app.Fragment; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.ListView; 
import android.widget.Toast; 

import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.database.ValueEventListener; 

import java.util.ArrayList; 

/** 
* Created by rahafo on 12/5/2017. 
*/ 


public class orderInfoFragment extends Fragment{ 
    double sum=0; 
    DatabaseReference mDatabase; 
    ListView shoppingList; 
    ArrayList<Shopping_cart> Shopping_cart; 
    DatabaseReference Shopping_cartRef; 
    DatabaseReference ShoppingcartProduct; 
    ProgressDialog mProgressDialog; 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     final View view = inflater.inflate(R.layout.activity_order_info,container,false); 

     mProgressDialog = new ProgressDialog(getActivity()); 
     mProgressDialog.setMessage("Loading Products.."); 
     mProgressDialog.show(); 
     Intent i = getActivity().getIntent(); 

     String uid = i.getExtras().getString("name",""); 
     Shopping_cart = new ArrayList<Shopping_cart>(); 
     LinearLayout productList = (LinearLayout) view.findViewById(R.id.shoppingList); 

     mDatabase = FirebaseDatabase.getInstance().getReference(); 


     Shopping_cartRef = mDatabase.child("Order"); 
     ShoppingcartProduct = Shopping_cartRef.child(uid).child("products"); 

     ValueEventListener eventListener = new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for(DataSnapshot ds : dataSnapshot.getChildren()) { 

        Shopping_cart product = ds.getValue(Shopping_cart.class); 

        Shopping_cart.add(product); 
        adapterShopping itemsAdapter = new adapterShopping(getActivity(), Shopping_cart); 
        shoppingList = (ListView) view.findViewById(R.id.listViewshopping); 
        shoppingList.setAdapter(itemsAdapter); 



       } 

       mProgressDialog.dismiss(); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) {} 
     }; 
     ShoppingcartProduct.addListenerForSingleValueEvent(eventListener); 



     return view; 
    } 
} 

내가 가진 오류 : 오류 : (134, 28) 오류 : 호환되지 않는 유형 : orderInfoFragment는 할 수 없습니다 Fragment 으로 변환 될 수 있지만 orderInfoFragment가 Fragment를 확장하므로 어떤 문제인지 알 수 없습니다. 내가 잘못 했습니까?

답변

0

매우 일반적인 문제 인 imports을 혼합합니다. 둘 중 하나는 Fragment과 같은 라이브러리 제공 구성 요소를 지원해야하므로 import android.support.... 항목이 있어야합니다. 이것은 OrderInfoTabbed 클래스 코드에있는 것입니다. 또는 plaftorm을 Fragment와 같이 제공하십시오 - orderInfoFragment 클래스에서했던 것처럼. 그러나 당신이 그들을 섞을 수 있고, 기술적으로 당신의 코드에서 으로 사용하는 것이 가능하다면 이것들은 이 아니고과 같습니다. 그리고 볼 수 있듯이 하나에서 다른 것으로 변환 할 수 없습니다.

해결책으로 import android.app.... 항목을 제거하고 다시 추가하십시오 (Android Studio can help you 참조). 이번에는 어떤 옵션을 선택 하느냐에 따라 옵션 목록이 표시됩니다.

내가 원하는 것을 lib에 지원하는 것이 확실하지 않으면 어쨌든 당신이 원했던 것입니다.

+0

더 자세히 설명해주세요. 나는 당신이 말하고 싶은 것을 얻지 못했습니다. – ROM

+0

그것이 작동했습니다, 감사합니다! – ROM

+0

문제의 근본 원인에 대한 설명이 필요하다고 생각되면 조금 답을 편집했습니다. –