0

Я создаю приложение, в котором отображаются данные с прорисовками. Я использовал функцию фрагментации во всех классах, но она вызывает ошибку в 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

Во всех ваших фрагментах изменяется «extends FragmentActivity» на «extends Fragment» –

+0

Как я могу использовать findviewbyid и getapplicationcontext, расширяя класс фрагментом? – user3508677

+0

для этого можно сделать так: «getActivity(). GetApplicationContext()» и использовать «findViewById» u должен сделать вот так: yourView.findViewById() здесь ваш вид - это представление, которое вы раздуваете в своем фрагменте. –

ответ

0

Изменить это.

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

Также в вашем Android классе продолжается с Fragment вместо FragmentActivity

Примечание: Убедитесь, что если вы продлили же с FragmentActivity вместо Fragment для Ios и Windows класса. Если это произойдет, измените, как указано выше.

UPDATE:

Вы используете Fragment так как Context вам нужно использовать getActivity() вместо getApplicationContext()

Меняем здесь

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); 

Посколькукогда вы используете Фрагменты, вам нужно передать объект View для поиска id для элементов пользовательского интерфейса в качестве ссылки.

+0

Расширение его фрагментом приводит к тому, что findviewbyid и getapplicationcontext() генерируют ошибки, как я работаю как с фрагментом, так и с активностью? – user3508677

Смежные вопросы