2016-07-04 167 views
-1

我嘗試構建一個方法來改變活動幀中的片段。 其中一項活動進展順利,但在第二項活動中,我收到了Error。我從第一個活動複製的代碼,並更改相關的東西,但在第二部分中,我得到錯誤說無法解決方法錯誤Android Studio

Error:(65, 25) error: no suitable method found for add(int,MyCarView)
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; MyCarView cannot be converted to Fragment)

的代碼工作是:

fragment2 = new MyCarEdit(); 

FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction transaction = fragmentManager.beginTransaction(); 
transaction.add(R.id.myCarFrame,fragment2); 
     transaction.commit(); 

和第二部分該不工作是 -

fragment3 = new MyCarView(); 
FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction transaction2 = fragmentManager.beginTransaction(); 
transaction2.add**(R.id.myCarFrame2,fragment3)**; 
transaction2.commit(); 

代碼** =是,標記爲錯誤的部分

就像我之前說過的,我已經將這些代碼放在其他活動中,並且它們運行良好。

這裏有什麼問題?

+1

錯誤提示:「MyCarView無法轉換爲碎片」 - 您的汽車是否顯示「碎片」? – JimmyB

+0

是的。 「MyCarView」是一個片段,完全像「MyCarEdit」,我不明白他們之間有什麼不同...... –

+1

您是使用'android.support.v4.app.Fragment'還是'android.app.Fragment' ?確保你在兩個方面都使用相同的方法。看看這裏:http://stackoverflow.com/questions/25744681/android-adding-a-simple-fragment –

回答

0

除了使用正確的類,你不應該以你正在做的方式創建碎片。 Google的創建片段的指導原則是,您需要有一個public static Fragment newInstance()方法,它可以創建實例以及參數,而您的構造函數應該是空的。例如:

public class YourFragment extends Fragment { 

    public static YourFragment newInstance() { 
     YourFragment frag = new YourFragment(); 
     Bundle args = new Bundle(); 
     ... 
     frag.setArguments(args); 
     return frag; 
    } 

    public YourFragment() {} 

    ... 
} 
+0

謝謝!我現在在這裏,所以我從答案中學到了很多。 –

+0

沒有問題!使用這種模式將允許你傳遞參數到你的片段中。關於你的問題,我99.9%肯定@Daniel Nugent的答案將解決它。如果您發現有用的答案,請考慮upvoting。 – Chisko

+0

是的,你的答案和@Daniel Nugent的答案可以幫助我找到我的錯誤。我爲你投票,但我沒有足夠的聲譽,所以你沒有看到。 –

相關問題