2016-05-22 14 views
0

新しいフラグメントを開始しようとしていますが、IDのビューが見つからないというアプリケーションがクラッシュしています。目標はボタンをクリックするとこのフラグメントを開始することです新しいフラグメントを開始しようとしたときにIDのビューが見つかりません

私はこれがたくさん尋ねられていることは知っていますが、何も私の問題を修正することはできませんでした。ここで

が出力されます。ここでは

05-22 15:45:11.125 3664-3664/com.example.tanner.sensortesting E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.example.tanner.sensortesting, PID: 3664 
                      java.lang.IllegalArgumentException: No view found for id 0x7f0c005f (com.example.tanner.sensortesting:id/sensorLayout) for fragment SensorActivity{2d46a59a #0 id=0x7f0c005f} 
                       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1059) 
                       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
                       at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) 
                       at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
                       at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:135) 
                       at android.app.ActivityThread.main(ActivityThread.java:5254) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

は私の主な活動です。私は二setContentViewのコメントを解除すると、それは動作しますが、それはこれは私が開始することだった断片である、互いに

package com.example.tanner.sensortesting; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final Button button = (Button) findViewById(R.id.button); 
    assert button != null; 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      //setContentView(R.layout.sensor_fragment); 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.sensorLayout, new SensorActivity()) 
        .commit(); 
     } 
    }); 
    } 
} 

から少しオフ2 sensorLayoutsを配置します

package com.example.tanner.sensortesting; 

import android.support.v4.app.Fragment; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

/** 
* Created by tanner on 5/15/16. 
*/ 
public class SensorActivity extends Fragment implements SensorEventListener { 
    private SensorManager sensorManager; 
    private Sensor accelerometer; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState){ 
    View rootView = inflater.inflate(R.layout.sensor_fragment, container, false); 
    sensorManager = (SensorManager)getActivity().getSystemService(getActivity().SENSOR_SERVICE); 
    accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    return rootView; 
} 

@Override 
public void onSensorChanged(SensorEvent event) { 
    double x = event.values[0]; 
    double y = event.values[1]; 
    double z = event.values[2]; 

    TextView xDegreeTextView = (TextView)getView().findViewById(R.id.xDegree); 
    TextView yDegreeTextView = (TextView)getView().findViewById(R.id.yDegree); 
    TextView zDegreeTextView = (TextView)getView().findViewById(R.id.zDegree); 

    xDegreeTextView.setText(x + "°"); 
    yDegreeTextView.setText(y + "°"); 
    zDegreeTextView.setText(z + "°"); 
} 

@Override 
public void onAccuracyChanged(Sensor sensor, int accuracy) { 

} 

}

そして最後にSensorActivityのXML :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.tanner.sensortesting.MainActivity"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/sensorLayout"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Large Text" 
     android:id="@+id/xDegree" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Large Text" 
     android:id="@+id/yDegree" 
     android:layout_below="@+id/xDegree" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="106dp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Large Text" 
     android:id="@+id/zDegree" 
     android:layout_below="@+id/yDegree" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="102dp" /> 
</RelativeLayout> 
</RelativeLayout> 

助けてください!

答えて

0

あなたはactivity_main.xml内のレイアウトにフラグメントを追加する必要があります。現在、id "sensorLayout"のビューはフラグメント自体のレイアウトにあります。

"activity_main"というIDを持つFramelayoutをactivity_main.xmlに追加してみてください。

さらに、断片にSensorFragmentのような名前を付ける方がよいでしょう。 Fragmentを拡張すると、それはFragmentです。アクティビティを拡張すると、アクティビティになります。

+0

ありがとうございました! – Tanner

関連する問題