0

이제이 문제는 나머지 문제를 해결합니다. 내 작업 코드 :왜이 프로젝트에서 NullPointerException이 발생합니까?

package edu.wmich.lab4_jjohns1119; 

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.ImageView; 
import android.view.animation.AnimationUtils; 
import android.view.animation.Animation; 

public class MainFragment extends Fragment { 

//Declare widget objects 
Button btnAnimate; 
ImageView imgTween; 
Animation tweenAnimation; 

//create view 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

//Inflater 
View rootView = inflater.inflate(R.layout.fragment_main, container,false); 
//Button 
    btnAnimate = (Button)rootView.findViewById(R.id.btnAnimate); 
    //Image 
    imgTween = (ImageView)rootView.findViewById(R.id.imgTween); 
    //Animation Resource 
    tweenAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.tween1); 
//Button listener for animation 
btnAnimate.setOnClickListener(new View.OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     //animate image 
     imgTween.startAnimation(tweenAnimation); 
    } 

}); 
//Return view 
return rootView; 
} 
} 

시작, 탐색하지만 애니메이션은 아무것도하지 않습니다. 내 추측은 코드의 순서가 애니메이션 앞에보기를 표시하는 잘못된 광고입니다. 를 heres 내 tween1.xml는 :

<?xml version="1.0" encoding="utf-8"?> 
<rotate 
xmlns:android="http//schemas.android.com/apk/res/android" 
android:fromDegrees="0" 
android:toDegrees="-45" 
android:duration="400" 
/> 
+1

스택 추적을 게시하십시오. 그런 다음 예외를 던지는 행을 볼 수 있습니다. 그렇지 않으면 몇 시간 동안 여기있을 수 있습니다. –

+1

stacktrace please? – kiruwka

+0

실례지만 내 무지는 스택 트레이스를 얻는 방법을 알아내는 것 같다. logcat 출력을 의미합니까? – pfortyseven

답변

2

왜 getView()를 사용하고 있습니까? rootView 아래의 모든 사용자 지정을 이동 할 :

http://schemas.android.com/apk/res/android 

는 HTTP (후 콜론을 참고 샘플에없는)

: 애니메이션이 작동하려면

btnAnimate = (Button)rootView.findViewById(R.id.btnAnimate); 

가에 네임 스페이스 선언을 변경

....

+0

게시 주셔서 감사합니다 !!! 더 이상 충돌하지 않습니다. 이제 애니메이션 버튼이 이미지에 아무런 영향을 미치지 않는 이유를 알아내는 것입니다 ... – pfortyseven

+0

tween1.xml에서 바꿀 필요가있는 것은 무엇입니까? – pfortyseven

+0

당신을 진심으로 환영합니다. 애국자에 대해 확실하지 않습니다. tween1.xml에 뭔가가 누락되었을 수 있습니다. –

3

귀하의 문제는 tweenAnimation 필드

Animation tweenAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.tween1); 

getActivity() 당신의 조각 수명주기 (생성)이 시점에서 null이며, 실패 또는를 반환 loadAnimation의 원인이됩니다 할당에있다 null 애니메이션. (loadAnimation 이미 하나를 던져하지 않은 경우)이 다음 NPE가 발생합니다 액세스

이동 활동이 onCreate

전 같은 존재합니다 조각의 수명주기의 지점으로 tweenAnimation을 할당.

Animation tweenAnimation; 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreat(savedInstanceState); 
    tweenAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.tween1); 
} 
+0

좋은 관찰. 나는 그것을 놓쳤다. – Fllo

+0

내 편집을 참조하십시오, theres 여전히 어딘가에 문제가 – pfortyseven

+0

Logcat 여전히 도움이 될 것입니다. –

0

문제는 당신이 getView() 또는 활동이 건물을 완료하기 전에 getActivity()를 호출 할 수 있다는 것입니다. 따라서 나중에 onActivityCreated(...) 메서드를 사용하여 이러한 메서드를 호출해야합니다.