0

私は新たにアンドロイドを学び始めました。だから私は、私が自分でフラグメントを作成することに決めたとき、トピックの断片をやっていました。以下は私が書いたコードです。ただし、コードを実行すると、エミュレータは「fragment2が停止しました」と表示します。 私のコードを見て、どこに間違っているのか教えてください。前もって感謝します。フラグメント(Android)でヘルプが必要

1.fragment

package com.example.adi.fragment2; 

import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import org.w3c.dom.Text; 

public class MainActivity extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activity_main,container,false); 
     final EditText editText = (EditText)view.findViewById(R.id.editText); 
     final TextView textView = (TextView)view.findViewById(R.id.textView); 
     Button button = (Button) view.findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       textView.setText(editText.getText().toString()); 
      } 
     }); 
     return view; 
    } 
} 

2.mainランチャー活動

package com.example.adi.fragment2; 

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 



public class Launcher extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FragmentManager fm = getSupportFragmentManager(); 
     Fragment fragment = fm.findFragmentById(R.id.box); 
     if(fragment==null) { 
      fragment = new MainActivity(); 
      fm.beginTransaction().add(R.id.box, fragment).commit(); 
     } 
    } 
} 

編集:ここで私は私がすることはできません完全なコードを持っていない

01-07 06:05:26.423 2183-2183/? I/art: Late-enabling -Xcheck:jni 
01-07 06:05:26.423 2183-2183/? W/art: Unexpected CPU variant for X86 using defaults: x86 
01-07 06:05:26.550 2183-2183/com.example.adi.fragment2 W/System: ClassLoader referenced unknown path: /data/app/com.example.adi.fragment2-2/lib/x86 
01-07 06:05:26.573 2183-2183/com.example.adi.fragment2 I/InstantRun: Instant Run Runtime started. Android package is com.example.adi.fragment2, real application class is null. 
01-07 06:05:26.944 2183-2183/com.example.adi.fragment2 W/System: ClassLoader referenced unknown path: /data/app/com.example.adi.fragment2-2/lib/x86 
01-07 06:05:26.985 2183-2183/com.example.adi.fragment2 D/AndroidRuntime: Shutting down VM 
01-07 06:05:26.986 2183-2183/com.example.adi.fragment2 E/AndroidRuntime: FATAL EXCEPTION: main 
      Process: com.example.adi.fragment2, PID: 2183 
      java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.adi.fragment2/com.example.adi.fragment2.MainActivity}: java.lang.ClassCastException: com.example.adi.fragment2.MainActivity cannot be cast to android.app.Activity 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
       at android.app.ActivityThread.-wrap12(ActivityThread.java) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:154) 
       at android.app.ActivityThread.main(ActivityThread.java:6077) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
       Caused by: java.lang.ClassCastException: com.example.adi.fragment2.MainActivity cannot be cast to android.app.Activity 
       at android.app.Instrumentation.newActivity(Instrumentation.java:1078) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2538) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)  
       at android.app.ActivityThread.-wrap12(ActivityThread.java)  
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)  
       at android.os.Handler.dispatchMessage(Handler.java:102)  
       at android.os.Looper.loop(Looper.java:154)  
       at android.app.ActivityThread.main(ActivityThread.java:6077)  
       at java.lang.reflect.Method.invoke(Native Method)  
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  
+0

ログステータスを投稿できますか? –

+0

私は上記のログステータスを入れました! – hamster

答えて

0

するには、あなたのコードにFragmentTransactionを追加しませんでした。

があなたのonCreateでこれを行いインポートすることを忘れないでくださいは

FragmentManager fm = getSupportFragmentManager(); 
     FragmentTransaction ft = fm.beginTransaction(); 
     ft.replace(R.id.content_frame, fragment);//add this only if add() doesn't work 
     ft.commit(); 

import android.support.v4.app.FragmentTransaction; 

をインポートして、あなただけの、このクラスをインポートしたことを確認することを忘れないでくださいmenthodすべてのメソッドについて

このクラスを使用すると、下位互換性以前のバージョンでは

これは解決する必要があります。 ハッピーコーディング。

+0

感謝しています。 – hamster

+0

うれしい私は助けることができた! –

0

ログのステータスがあります100%確実。しかし、フラグメントマネージャ上で置換を使用しようとする代わりに、以下に示すデフォルトのフラグメントがすでに存在する場合は、それを修正することができます。

変更

fm.beginTransaction().add(R.id.box, fragment).commit(); 

fm.beginTransaction().replace(R.id.box, fragment).commit(); 
0

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.adi.fragment2/com.example.adi.fragment2.MainActivity}: java.lang.ClassCastException: com.example.adi.fragment2.MainActivity cannot be cast to android.app.Activity 

をよく見を持ってそれはcom.example.adi.fragment2.MainActivity cannot be cast to android.app.Activity言います。あなたのMainActivityは実際にFragment

public class MainActivity extends Fragment{ 

} 

あなたのクラスのために意味のある名前を使用することです。

0

これは魔法のログラインです:

java.lang.ClassCastException: com.example.adi.fragment2.MainActivity cannot be cast to android.app.Activity 

基本的にはあなたの主な活動はFragmentActivityクラスを拡張している、と私はあなたのフラグメントのXMLファイルにあなたはまた、これを参照することができますandroid.app.Fragment

を使用していることを前提とanswer詳細については

関連する問題