2017-05-04 62 views
0

我試圖從用戶中捕獲任何觸摸事件以在布爾驗證中使用它(如「press on屏幕繼續「)。但我得到一個錯誤,這是問題的標題。 它說行:嘗試調用空對象的虛擬方法'int android.view.MotionEvent.getAction()'參考

resultadoPalavra.setText("Você acertou! Pressione na tela para continuar"); 

是,「按屏幕上繼續」我曾提到過。

代碼:

public class ApurarResultadoFragment extends Fragment{ 

private TextView resultadoPalavra; 
String palavraDigitada; 
String resposta; 
MainActivity mActivity = new MainActivity(); 
private boolean isTouch = false; 
MotionEvent event; 


public ApurarResultadoFragment() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_apurar_resultado, container, false); 
    resultadoPalavra = (TextView) view.findViewById(R.id.TextViewTesteFragment); 
    palavraDigitada = this.getArguments().getString("oqSeraFalado"); 
    resposta = this.getArguments().getString("resposta"); 

    if(testeResultado()){ 
     resultadoPalavra.setText("Você acertou! Pressione na tela para continuar"); 
     if(onTouchEvent(view, event)){ 
      Log.v("teste","" + isTouch); 
     } 

    } 
    return view; 
} 

public boolean onTouchEvent(View v, MotionEvent event){ 
    int eventaction = event.getAction(); 
    switch (eventaction){ 
     case MotionEvent.ACTION_DOWN: 
      isTouch = true; 
      break; 
     case MotionEvent.ACTION_UP: 
      isTouch = true; 
      break; 
     case MotionEvent.ACTION_MOVE: 
      isTouch = true; 
      break; 
    } 
    return true; 
} 

public boolean testeResultado() { 
    if (resposta.equalsIgnoreCase(palavraDigitada)){ 
     return true; 
    }else{ 
     return false; 
    } 
} 
} 

我怎麼能初始化變量 「事件」?我猜她是問題

+0

的可能的複製[什麼是一個NullPointerException,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) –

回答

0

以下是如何TouchListener添加到視圖:

view.setOnTouchListener(new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     int eventaction = event.getAction(); 
     switch (eventaction) { 
      case MotionEvent.ACTION_DOWN: 
       isTouch = true; 
       break; 
      case MotionEvent.ACTION_UP: 
       isTouch = true; 
       break; 
      case MotionEvent.ACTION_MOVE: 
       isTouch = true; 
       break; 
     } 
     return true; 
     } 
    }); 

但在你的情況,我會改用OnClickListener:

view.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Log.v("teste", "touched"); 
    } 
}); 
+0

你太好了! :D這解決了我的問題 –

相關問題