0

我正在製作一個簡單的memegenerator應用程序,用戶應在其中輸入底部和頂部字段的文本,並且該文本將添加到圖片的底部和頂部。由於我想保持簡單的應用程序,我只使用了一個用於Meme的固定圖像。 我已經使用了兩個片段。一個用於Edittext區域,另一個用於viwtext區域(etxt將附加在圖片上)。爲了將它們粘合在一起,我創建了一個接口,它也在我的mainActivity的java文件中被調用。現在問題出現在我的主要Java類的以下幾行代碼中。這裏的方法memeGen是這個應用程序的主要大腦。在裏面,我試圖通過它的id找到一個片段。但它似乎沒有發現這種資源。如何擺脫這種「不可轉換」的錯誤?

public void memeGen(String top, String bottom) { 
     BottomSectionJava bjs=(BottomSectionJava)getSupportFragmentManager().findFragmentById(R.id.fragment2); 

    } 

其他一切工作正常。只有上面的行顯示了這個錯誤: Error

我的日誌文件輸出這樣的:

C:\Users\Riyana\AndroidStudioProjects\Fragment\app\src\main\java\com\mycompany\fragment\FragmentActivity.java 
Error:(20, 94) error: inconvertible types 
required: BottomSectionJava 
found: Fragment 
Error:Execution failed for task ':app:compileDebugJava'. 
> Compilation failed; see the compiler error output for details. 

這是該類錯誤所在出現的完整代碼:

public class FragmentActivity extends ActionBarActivity implements TopSectionjava.TopSectionListener{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fragment); 
    } 

    @Override 
    public void memeGen(String top, String bottom) { 
     BottomSectionJava bjs=(BottomSectionJava)getSupportFragmentManager().findFragmentById(R.id.fragment2); 

    } 


    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_, menu); 
     return true; 
    } 
} 

BottomSectionJava:

public class BottomSectionJava extends Fragment{ 
    private static TextView memetext_top; 
    private static TextView memetext_bottom; 
// 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     //return super.onCreateView(inflater, container, savedInstanceState); 
     View view=inflater.inflate(R.layout.bottom_section,container,false); 
     memetext_top=(TextView)view.findViewById(R.id.memetext_top); 
     memetext_bottom=(TextView)view.findViewById(R.id.memetext_bottom); 
     return view; 
    } 

    public void setTextOnThePic(String top,String bottom){ 
     memetext_top.setText(top); 
     memetext_bottom.setText(bottom); 

    } 

} 
+0

爲什麼要在BottomSectionJava對象上投射碎片? BottomSectionJava是否擴展了片段? – 2015-02-17 22:45:51

+0

康拉德克拉科維亞克,是的,它極端的碎片。如果你這次看到我的發佈版。我在我的代碼中添加了該部分。 – Riyana 2015-02-17 22:52:59

+0

好的,我更新了我的帖子 – 2015-02-17 23:07:25

回答

2

更改擴展名i ñBottomSectionJavaandroid.app.Fragmentandroid.support.v4.app.Fragment

我認爲,你有你的進口下面一行:

import android.app.Fragment; 

,你必須有

import android.support.v4.app.Fragment; 

現在你的片段從android.app包擴展對象Fragment和您必須從android.support.v4.app包中擴展Fragment

+0

非常感謝你。其實我有兩個片段。那就是爲什麼我必須對這兩個班級應用同樣的建議。現在我擺脫了主要問題。我的應用正在運行。當我點擊按鈕添加文本時,唯一的問題是什麼也沒有發生。它不會在圖片上的textView區域添加文本。但是我不會打斷你。如果你有時間可以看看我的問題爲什麼按鈕點擊不起作用?否則它確定。 XX – Riyana 2015-02-17 23:32:56

+0

我很高興能幫助你。 – 2015-02-18 07:00:57

+0

你在哪裏調用setTextOnThePic(Sting,String)方法?沒有任何你初始化聽衆的地方。 – 2015-02-18 08:01:35