2017-01-07 11 views
1

TextViewのためにアプリがクラッシュします。デバイスの向きが変わらない限り動作します。 TextViewを削除してデバイスを回転すると、すべて正常に動作しますが、TextViewでは正常に動作しません。
私はポートレートとレイアウトの2つのレイアウトを持っています。
は、彼らはそのようになります。AndroidのTextViewのためにアプリケーションがクラッシュする

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 

    <TextureView 
     android:id="@+id/texture" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <TextView 
     android:layout_width="220dp" 
     android:layout_height="50dp" 
     android:id="@+id/text_time" 
     android:textSize="20dp" 
     android:textColor="@color/red" 
     android:layout_marginTop="14dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentEnd="true" /> 

</RelativeLayout> 

そして、いくつかのコード:

public void onViewCreated(final View view, Bundle savedInstanceState) { 
     mTextView = (TextView) view.findViewById(R.id.text_time); 
     mTextView.setVisibility(View.INVISIBLE); 
} 

を、私はテキストを設定する別の方法で:

mTextView.setVisibility(View.VISIBLE); 
mTextView.setText("Text"); 

をし、それはそれです。だから、それがうまくいかない理由は何ですか?

私は次のエラーを取得する:

01-07 17:14:28.117 12890-12890/k.com.kamera E/AndroidRuntime: FATAL EXCEPTION: main 
                    Process: k.com.kamera, PID: 12890 
                    java.lang.IllegalStateException: Fragment BasicFragmentVideo{e87fd0c} not attached to Activity 
                     at android.app.Fragment.getResources(Fragment.java:805) 
                     at android.app.Fragment.getString(Fragment.java:840) 
                     at k.com.kamera.BasicFragmentVideo$5$1$1.run(BasicFragmentVideo.java:483) 
                     at android.os.Handler.handleCallback(Handler.java:739) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:168) 
                     at android.app.ActivityThread.main(ActivityThread.java:5845) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 
+0

フラグメントインスタンスを保持するために、フラグメントクラスでsetretaininstanceを使用してください。 –

+0

実用的なコードを提供できますか? – hulapalu

答えて

0

たび向きの変更、あなたがフラグメントの新しいインスタンスを作成しています。そのうち1つだけがアクティビティに実際に添付されています。オリエンテーションが発生したときに、これはフラグメント・インスタンスを保持しますフラグメントに真としてあなたフラグメントのonCreateView()またはonActivityCreated()

+0

このように 'Fragment'を追加します:android.app.FragmentTransaction transaction = getFragmentManager()。beginTransaction(); transaction.replace(R.id.camera_frame、fragInfo); transaction.commit(); – hulapalu

+0

あなたは 'import android.app.fragment'を使用していますか? – rafsanahmad007

+0

はい。デバイスが回転しない限り、私はそのフラグメントを開くあなたのアクティビティにその – hulapalu

0

使用setRetainInstanceにこの

public class TestActivity extends Activity { 

    TestFragment testFragment; 

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

    private void attachFragment(Bundle savedInstanceState) { 
     if (savedInstanceState == null){ 
      testFragment = new TestFragment(); 
      getFragmentManager().beginTransaction() 
      .replace(R.id.camera_frame, testFragment,  "testFragment").commitAllowingStateLoss(); 
    } else { 
     testFragment = (TestFragment)getFragmentManager().findFragmentByTag("testFragment"); 
    } 
} 

コールsetRetainInstance(true)を試してみて、今Acitivtyに内部あなたのフラグメントをチェックするのonCreateインスタンスと追加

+0

を確認してください。しかし、それをtrueに設定すると、もうテキストビューは存在しません。あなたはそれを修正する方法を知っていますか? – hulapalu

関連する問題