2013-06-06 2 views
2

저는 안드로이드가 처음이에요.이게 총 멍청한 질문이라면 사과드립니다. 비슷한 주제를 검색하는 데 몇 시간을 보냈지 만 해결책을 찾지 못했습니다.안드로이드 : java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo

> java.lang.RuntimeException: Unable to start activity 
> ComponentInfo{com.avnsoft.runtracker/com.avnsoft.runtracker.RunActivity}: 
> java.lang.NullPointerException 

스택 트레이스 :

> AndroidRuntime(21828): FATAL EXCEPTION: main 06-07 00:35:24.792: 
> E/AndroidRuntime(21828): java.lang.RuntimeException: Unable to start 
> activity 
> ComponentInfo{com.avnsoft.runtracker/com.avnsoft.runtracker.RunActivity}: 
> java.lang.NullPointerException 06-07 00:35:24.792: 
> E/AndroidRuntime(21828): at 
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): at 
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): at 
> android.app.ActivityThread.access$600(ActivityThread.java:141) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): at 
> android.os.Handler.dispatchMessage(Handler.java:99) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> android.os.Looper.loop(Looper.java:137) 06-07 00:35:24.792: 
> E/AndroidRuntime(21828): at 
> android.app.ActivityThread.main(ActivityThread.java:5041) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> java.lang.reflect.Method.invokeNative(Native Method) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> java.lang.reflect.Method.invoke(Method.java:511) 06-07 00:35:24.792: 
> E/AndroidRuntime(21828): at 
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): at 
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> dalvik.system.NativeStart.main(Native Method) 06-07 00:35:24.792: 
> E/AndroidRuntime(21828): Caused by: java.lang.NullPointerException 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): at 
> android.view.ViewGroup.addViewInner(ViewGroup.java:3338) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> android.view.ViewGroup.addView(ViewGroup.java:3210) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> android.view.ViewGroup.addView(ViewGroup.java:3186) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:289) 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): at 
> com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:279) 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): at 
> android.app.Activity.setContentView(Activity.java:1901) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> com.avnsoft.runtracker.SingleFragmentActivity.onCreate(SingleFragmentActivity.java:21) 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): at 
> com.avnsoft.runtracker.RunActivity.onCreate(RunActivity.java:11) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> android.app.Activity.performCreate(Activity.java:5104) 06-07 
> 00:35:24.792: E/AndroidRuntime(21828): at 
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): at 
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
> 06-07 00:35:24.792: E/AndroidRuntime(21828): ... 11 more 

activity_fragment.xml :

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

activity_run.xml :

나는 응용 프로그램을 실행하려고이 오류를 받고 있어요

<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=".RunActivity" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 

</RelativeLayout> 

fragment_run.xml :

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    > 
    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:paddingRight="5sp" 
      android:text="@string/started" 
      /> 
     <TextView android:id="@+id/run_startedTextView" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      /> 
    </TableRow> 
    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:paddingRight="5sp" 
      android:text="@string/latitude" 
      /> 
     <TextView android:id="@+id/run_latitudeTextView" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      /> 
    </TableRow> 
    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:paddingRight="5sp" 
      android:text="@string/longitude" 
      /> 
     <TextView android:id="@+id/run_longitudeTextView" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      /> 
    </TableRow> 
    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:paddingRight="5sp" 
      android:text="@string/altitude" 
      /> 
     <TextView android:id="@+id/run_altitudeTextView" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      /> 
    </TableRow> 
    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:paddingRight="5sp" 
      android:text="@string/elapsed_time" 
      /> 
     <TextView android:id="@+id/run_durationTextView" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textSize="25sp" 
      /> 
    </TableRow> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_height="wrap_content" 
     > 
     <Button android:id="@+id/run_startButton" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/start" 
      /> 
     <Button android:id="@+id/run_stopButton" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/stop" 
      /> 
    </LinearLayout> 
</TableLayout> 

SingleFragmentActivity.java :

package com.avnsoft.runtracker; 


import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.widget.FrameLayout; 

public abstract class SingleFragmentActivity extends FragmentActivity { 
    protected static final String FRAGMENT_TAG = "SingleFragmentActivity.Fragment"; 

    protected abstract Fragment createFragment(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FrameLayout fl = new FrameLayout(this); 
     fl.setId(R.id.fragmentContainer); 
     setContentView(fl); 

     FragmentManager manager = getSupportFragmentManager(); 
     Fragment fragment = manager.findFragmentById(R.id.fragmentContainer); 

     if (fragment == null) { 
      fragment = createFragment(); 
      manager.beginTransaction() 
       .add(R.id.fragmentContainer, fragment) 
       .commit(); 
     } 
    } 
} 

RunActivity.java :

package com.avnsoft.runtracker; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.Menu; 

public class RunActivity extends SingleFragmentActivity { 

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

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

    @Override 
    protected Fragment createFragment() { 
     return new RunFragment(); 
    } 

} 

마지막 RunFragment.java :

package com.avnsoft.runtracker; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 

public class RunFragment extends Fragment { 

    private Button mStartButton, mStopButton; 
    private TextView mStartedTextView, 
    mLatitudeTextView, 
    mLongitudeTextView, 
    mAltitudetextView, 
    mDurationTextView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setRetainInstance(true); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    //Create View 
    View view = inflater.inflate(R.layout.fragment_run, container, false); 

    //Assign widgets 
    mStartedTextView = (TextView)view.findViewById(R.id.run_startedTextView); 
    mLatitudeTextView = (TextView)view.findViewById(R.id.run_latitudeTextView); 
    mLongitudeTextView = (TextView)view.findViewById(R.id.run_longitudeTextView); 
    mAltitudetextView = (TextView)view.findViewById(R.id.run_altitudeTextView); 
    mDurationTextView = (TextView)view.findViewById(R.id.run_durationTextView); 

    mStartButton = (Button)view.findViewById(R.id.run_startButton); 
    mStopButton = (Button)view.findViewById(R.id.run_stopButton); 

    return view; 

    } 

} 

나는 과도한 양의 코드에 대해 사과하지만 문제를 찾기 위해 4 시간을 소비 한 후에 나는 그것이 어디 있는지 전혀 모른다 ... 누군가가 도와 줄 수 있습니까? 감사!

+0

'SingleFragmentActivity'의 21 행은 무엇입니까? 그것이 null 인 것 같습니다. – codeMagic

+0

createFragment() 메소드 본문을 정의한 부분이 있습니까? –

+0

NPE는'onCreate'에서'setContentView (fl);에 의해 발생합니다. –

답변

0

은 내가 NPE가 로 인해 발생 생각 : 안드로이드 만에서 onCreate 호출 후 얻을 컨텍스트에 대한 참조를 기대하고있다

FrameLayout fl = new FrameLayout(this); 

.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_fragment); 
    ... 
+0

나는 이것이 문제일지도 모른다고 생각하지만 유감스럽게도 그렇지 않습니다. 같은 NPE로 여전히 충돌합니다. 다른 아이디어? –

+0

답을 찾았습니다. RunActivity.java에서 onCreate 메서드를 제거해야 할 때 SingleFragmentActivity 구현을 방해하고있었습니다. 노력해 주셔서 감사합니다! –

관련 문제