2017-10-05 28 views
-1

私の問題は、私がFragmentTransactionに使用しているバージョンについてだと思うが、それを得ることはできない。Androidでトランザクションエラーを解決するにはどうすればよいですか?

Error:(21, 20) error: no suitable method found for add(int,BlankFragment) 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; BlankFragment cannot be converted to Fragment) Error:(22, 20) error: no suitable method found for add(int,Fragment2) 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; Fragment2 cannot be converted to Fragment) Error:Execution failed for task ':app:compileDebugJavaWithJavac'. Compilation failed; see the compiler error output for details.

コード:ここで構築するアプリが失敗したときに、私が得るメッセージです

package com.example.mohamedremih.fragments; 

import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.os.Handler; 
import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class MainActivity extends AppCompatActivity implements BlankFragment.OnFragmentInteractionListener{ 
     Fragment2 fragment2; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     fragment2=new Fragment2(); 
     BlankFragment blankFragment=new BlankFragment(); 
     FragmentManager manager=getFragmentManager(); 
     FragmentTransaction transaction=manager.beginTransaction(); 
     transaction.add(R.id.lay1,blankFragment); 
     transaction.add(R.id.lay2,fragment2); 
     transaction.commit(); 
    } 
} 
+3

ようこそスタックオーバーフロー。あなたはどんな種類の問題についても説明していません。最初に間違っていることを教えてくれないと、どうやって助けてくれるのですか?あなたが持っている問題をはっきりと説明するのはあなたの仕事です。 **質問と回答**の最初の半分です。適切に質問を書いていない場合は、回答を提供することはできません。 [ツアー]をして[ヘルプ]ページ、特に[質問]を読んでいくうちに時間をかけてください。 **エラー**と言うと、正確なエラーメッセージを含め、**あなたが得ているエラー**を教えてください。 –

+0

エラーが発生した場合は、logcatを投稿してください。古いデバッガを起動し、プログラムが失敗している行をお知らせください。 – Barns

+0

エラー:(21,20)エラー:add(int、BlankFragment)の適切なメソッドが見つかりません メソッドFragmentTransaction.add(Fragment、String)は適用されません。 (引数の不一致;フラグメント化できません) メソッドFragmentTransaction。 add(int、Fragment)is not (引数の不一致; BlankFragmentをFragmentに変換できません) >コンパイルに失敗しました。詳細については、コンパイラのエラー出力を参照してください。 – Beginner

答えて

0

は、ここで私は新しいフラグメントにフラグメントを更新するために使用する方法があります。すでにFrameLayoutとしてプレースホルダフラグメントが用意されていると仮定します。

protected void swapFragment(BaseFragment fragment, @Nullable Bundle bundle) { 
     if (fragment.isVisible()) { 
      return; 

     } 

     A35Log.v(TAG, "swapFragment(" + fragment.getClass().getSimpleName() + ")"); 
     Bundle currentFragBundle = fragment.getArguments(); 
     if (currentFragBundle == null && bundle != null) { 
      fragment.setArguments(bundle); 

     } else if (bundle != null) { 
      fragment.getArguments().putAll(bundle); 

     } 


     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.executePendingTransactions(); 

     //Make sure the requested fragment isn't already on the screen before adding it 
     if (fragment.isAdded()) { 
      if (fragment.isHidden()) { 
       fragmentManager.beginTransaction().show(fragment).commit(); 

      } 

      A35Log.v(TAG, "Fragment was hidden, so removeFullScreen instead of replace"); 
      return; 

     } 

     mSelectedFragment = fragment; 
     A35Log.v(TAG, "Replacing Active Fragment with " + fragment.getClass().getSimpleName()); 

     FragmentManager manager = getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = manager.beginTransaction(); 
     fragmentTransaction.replace(R.id.fragPlaceholder, fragment); 
     fragmentTransaction.commit(); 

    } 

は、代わりにショットすることを与え、あなたはfragPlaceHolderという名前のレイアウトを持っているか、他の代わりにXMLからあなたでframeLayoutを指すように、このメソッドを更新してください。私は通常、BaseActivityなどでこれを持っています。

0

これは、android.support.v4.app.Fragmentからandroid.app.FragmentTransactionに拡張されたサポートライブラリのFragmentを追加しようとしているためです。したがって、サポートライブラリのFragmentTransactionを次のように使用する必要があります。

import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
関連する問題