2016-07-01 2 views
-1
//Main activity.java 

package com.example.sahilnitish.easyyagriculture; 
import android.app.Activity; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity 
{ 
boolean status=false; 
    Button bn; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
{  
super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     bn=(Button)findViewById(R.id.bn); 
     bn.setOnClickListener(new View.OnClickListener() 
{ 
      @Override 
      public void onClick(View v) 
      { 
       FragmentManager fragmentManager = getFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       if(!status) 
       { 
        Fragmentone f1 =new Fragmentone(); 
        fragmentTransaction.add(R.id.fragment_container,f1); 
        fragmentTransaction.commit(); 
        bn.setText("Load Second fragment"); 
        status=true; 
       } 
       else 
       { 
        FragmentTwo f2 = new FragmentTwo(); 
        fragmentTransaction.add(R.id.fragment_container,f2); 
        fragmentTransaction.commit(); 
        bn.setText("Load first fragment"); 
        status=false; 
       } 
      } 
     }); 
    } 
} 

Ошибка: -Android Studio 2.1 Linking Фрагмент

Error:(29, 40) error: no suitable method found for add(int,Fragmentone) method FragmentTransaction.add(Fragment,String) is not applicable (argument mismatch; int cannot be converted to Fragment) method FragmentTransaction.add(int,Fragment) is not applicable (argument mismatch; Fragmentone cannot be converted to Fragment)

fragmentone.java

package com.example.sahilnitish.easyyagriculture; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

/** 
* A simple {@link Fragment} subclass. 
*/ 
public class Fragmentone extends Fragment 
{ 
    public Fragmentone() 
    // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) 
{ 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_one_layout, container, false); 
    } 
} 
+0

Пожалуйста, разместите свой «Фрагмент». Это сообщение об ошибке сообщает вам, что 'Fragmentone' не расширяет правильный класс. –

+0

Когда вы отправляете такой вопрос, вы можете указать, в какой строке возникает ошибка. –

+0

fragmentTransaction.add (R.id.fragment_container, f1); это строка ошибки @GleenHowes –

ответ

0

Вы используете FragmentManager с поддержки фрагмента.

Либо позвольте вашему MainActivity расширить ActivityCompat и использовать поддержкуFragmentManager, либо позволить вашему фрагменту расширить «нормальный» фрагмент.

//Main activity.java 
package com.example.sahilnitish.easyyagriculture; 

import android.support.v7.app.AppCompatActivity; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.os.Bundle; 
import android.view.View; 

import android.widget.Button; 

public class MainActivity extends AppCompatActivity 
{ 

    boolean status=false; 
    Button bn; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
     bn=(Button)findViewById(R.id.bn); 

     bn.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       FragmentManager fragmentManager = getSupportFragmentManager(); 

       FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       if(!status) 
       { 
        Fragmentone f1 =new Fragmentone(); 

        fragmentTransaction.add(R.id.fragment_container,f1); 
        fragmentTransaction.commit(); 
        bn.setText("Load Second fragment"); 
        status=true; 
       } 
       else 
       { 
        FragmentTwo f2 = new FragmentTwo(); 
        fragmentTransaction.add(R.id.fragment_container,f2); 

        fragmentTransaction.commit(); 
        bn.setText("Load first fragment"); 
        status=false; 
       } 

      } 
     }); 
    } 
} 
+0

Большое вам спасибо, что на самом деле работало. @babadaba –

0

Это происходит потому, что вы используете неправильный FragmentManager.

Итак, первый изменить оператор импорта из:

import android.app.FragmentManager; 

к:

import android.support.v4.app.FragmentManager; 

, а также вы должны использовать getSupportFragmentManager() в вашем случае.

так изменить:

FragmentManager fragmentManager = getFragmentManager(); 

к:

FragmentManager fragmentManager = getSupportFragmentManager(); 

Также ваш Activity class который MainActivity в вашем случае, следует расширить AppCompatActivity вместо Activity.

+0

После внесения изменений по-прежнему возникает ошибка: - не удается разрешить getSupportFragmentManager. –

+0

ваша 'MainActivity' должна расширять' AppCompatActivity' вместо 'Activity'. измените это тоже и проверьте, работает ли он. –

+0

Посмотрите на мой ответ, ваша деятельность должна расширить AppCompatActivity – babadaba

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