0

나는 스 와이프 뷰를 사용하여 데이터를 표시하는 앱을 만들고 있습니다. 나는 모든 클래스에서 fragmentactivity를 사용했지만 fragmentstatepageadapter와 호환되지 않는 tabpagedapater에서 오류가 발생합니다. 어떻게 수정합니까?FragmentActivity가 FragmentStatePagerAdapter와 호환되지 않습니다.

Tabpageadapter.java

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 

public class TabPagerAdapter extends FragmentStatePagerAdapter { 
    public TabPagerAdapter(FragmentManager fm) { 
     super(fm); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public FragmentActivity getItem(int i) { 
     switch (i) { 
     case 0: 
      //Fragement for Android Tab 
      return new Android(); 
     case 1: 
      //Fragment for Ios Tab 
      return new Ios(); 
     case 2: 
      //Fragment for Windows Tab 
      return new Windows(); 
     } 
     return null; 

    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 




    } 

Mainactivity

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.TextView; 

import com.learn2crack.library.DatabaseHandler; 

import java.util.HashMap; 

public class Android extends FragmentActivity { 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) 
    { 


      View android = inflater.inflate(R.layout.android_frag, container, false); 
      DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 

      HashMap<String,String> user = new HashMap<String, String>(); 
      user = db.getUserDetails(); 

      /** 
      * Displays the registration details in Text view 
      **/ 

      final TextView fname = (TextView)findViewById(R.id.fname); 
      final TextView lname = (TextView)findViewById(R.id.lname); 
      final TextView uname = (TextView)findViewById(R.id.uname); 
      final TextView email = (TextView)findViewById(R.id.email); 
      final TextView created_at = (TextView)findViewById(R.id.regat); 
      fname.setText(user.get("fname")); 
      lname.setText(user.get("lname")); 
      uname.setText(user.get("uname")); 
      email.setText(user.get("email")); 
      created_at.setText(user.get("created_at")); 

      return android; 
}} 
+1

"FragmentActivity"를 "extends Fragment"로 변경하십시오. –

+0

조각을 사용하여 클래스를 확장하여 findviewbyid 및 getapplicationcontext를 어떻게 사용할 수 있습니까? – user3508677

+0

그 "getActivity(). getApplicationContext()"처럼 할 수있는 "findViewById"u는 이렇게해야합니다 : yourView.findViewById() 여기 yourView 귀하의 조각에 팽창 그보기입니다. –

답변

0

변경이. 당신의 Android 클래스

또한
@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return 3; 
} 

Fragment 대신

FragmentActivity의 참고로 확장 : 확인 당신이 IosWindows 클래스 FragmentActivity 대신 Fragment와 같은 확장 한 경우. 위와 같이 변경되면 나는 말했다.

UPDATE :

당신은 Fragment를 사용하고는, 그래서 Context 당신은 그래서 여기에 또한

DatabaseHandler db = new DatabaseHandler(getActivity()); 

여기

final TextView fname = (TextView)android.findViewById(R.id.fname); 
    final TextView lname = (TextView)android.findViewById(R.id.lname); 
    final TextView uname = (TextView)android.findViewById(R.id.uname); 
    final TextView email = (TextView)android.findViewById(R.id.email); 
    final TextView created_at = (TextView)android.findViewById(R.id.regat); 

때문에 변경하는 대신 getApplicationContext()

getActivity()를 사용할 필요가Fragments를 사용할 때 UI 요소에 대한 찾기 ID에 대한 View 객체를 참조로 전달해야합니다.

+0

조각으로 확장하면 findviewbyid 및 getapplicationcontext() 오류가 발생합니다. 조각 및 작업 모두에서 어떻게 작동합니까? – user3508677

관련 문제