내 프로젝트에는 위치를 검색 할 수있는 간단한 클래스가있다. 정적 클래스 인 innerclass를 가진다.프래그먼트에서 액티비티 뷰 얻기
MainActivity.java
public class MainActivity extends Activity {
GPSTracker gps;
double mylatitude, mylongitude;
TextView txt_location;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt_location = (TextView) findViewById(R.id.current_location);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
gps = new GPSTracker(MainActivity.this);
if (gps.canGetLocation()) {
mylatitude = gps.getLatitude();
mylongitude = gps.getLongitude();
String latis = Double.toString(mylatitude);
String longis = Double.toString(mylongitude);
Log.d("my",latis+ "location to string is done " + longis);
txt_location.setText(latis+longis);
}
}
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_main, container,
false);
}
}
}
코드는 txt_location.setText(latis+longis);
NullPointerException
에서 보이고있다.
java.lang.RuntimeException: Unable to start activity ComponentInfo{.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:592)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at MainActivity.onCreate(MainActivity.java:47)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1051)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:592)
at dalvik.system.NativeStart.main(Native Method)
내가 그것 (XML 파일에 어떤 실수가 없다) (TextView) findViewById(R.id.current_location);
에서 txt_places
을 찾을 수 없기 때문에이 조각의 XML로보기 때문 오류입니다 발견 다음과 같이
로그 캣 로그입니다 활동의 것이 아닙니다. 활동에서 어떻게 접근합니까?
을 그냥 sidenode : 이럴 그것에서'Fragment'의'View'를 변경하는 나쁜 디자인이다 '가 부착되어 Activity'. 'Fragment'가 항상 자신의 UI를 처리하도록 부모'Activity'가 아닌'Activity'의'Fragment' 메소드를 호출해야합니다. – shkschneider
대답에서 설명 할 수 있습니까? 나는 그것을 감사 할 것이다. – xyz