2016-06-23 21 views
0

私はこのエラーの報告を受けましたが、テスト機器を持っていてすべてが正しく機能します。奇妙なのは、すべてのエラー報告がモバイルsamsungから送信されるということです。 私はそれを解決できない場合、何ができますか? エラーコード:Galaxy samsungのjava.lang.NullPointerExceptionエラーのみ

Último informe 
18 de jun. 4:57 
Informes de esta semana 
1 
Informes totales 
1 
Versión de la aplicación 

25 
1 
Versión de Android 

Android 5.1 
1 
Dispositivo 
Galaxy S6 Edge+ (zenlte) 1 
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference 
    at ro.vrt.videoplayerstreaming.TorrentPlayerFragment$1.onClick(TorrentPlayerFragment.java:107) 
    at android.view.View.performClick(View.java:5254) 
    at android.widget.TextView.performClick(TextView.java:10557) 
    at android.view.View$PerformClick.run(View.java:21203) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.app.ActivityThread.main(ActivityThread.java:6897) 
    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:1404) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 

のJava:

@SuppressLint("SetTextI18n") 
public class TorrentPlayerFragment extends Fragment implements TorrentListener { 


    private Button button2; 
    private Button button; 
    private ProgressBar progressBar; 
    private TorrentStream torrentStream; 

    String mStreamUrl; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.activity_torrent_player_fragment, container, false); 


     mStreamUrl = ((EditText) v.findViewById(R.id.bTorrentUrl)).getText().toString(); 

     String action = getActivity().getIntent().getAction(); 
     Uri data = getActivity().getIntent().getData(); 
     if (action != null && action.equals(Intent.ACTION_VIEW) && data != null) { 
      try { 
       mStreamUrl = URLDecoder.decode(data.toString(), "utf-8"); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 
     } 

     TorrentOptions torrentOptions = new TorrentOptions.Builder() 
       .saveLocation(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)) 
       .removeFilesAfterStop(true) 
       .build(); 

     torrentStream = TorrentStream.init(torrentOptions); 
     torrentStream.addListener(this); 

     button2 = (Button) v.findViewById(R.id.button2); 
     button2.setVisibility(View.GONE); 

     button = (Button) v.findViewById(R.id.button); 
     button.setOnClickListener(mOnClickListener); 
     progressBar = (ProgressBar) v.findViewById(R.id.progress); 

     progressBar.setMax(100); 



     return v; 


    } 
    @Override 
    public void onResume() { 
     super.onResume(); 
    } 

    View.OnClickListener mOnClickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      progressBar.setProgress(0); 
      if(torrentStream.isStreaming()) { 
       torrentStream.stopStream(); 
       button.setText("Start stream"); 
       button2.setVisibility(View.GONE); 
       return; 
      } 
      Bundle args = getArguments(); 
      mStreamUrl = args.getString("url"); 
      torrentStream.startStream(mStreamUrl); 
      button2.setVisibility(View.GONE); 
      button.setText("Stop stream"); 
     } 
    }; 



    @Override 
    public void onStreamPrepared(Torrent torrent) { 
     Log.d("Torrent", "OnStreamPrepared"); 
     torrent.startDownload(); 
    } 

    @Override 
    public void onStreamStarted(Torrent torrent) { 
     Log.d("Torrent", "onStreamStarted"); 
    } 

    @Override 
    public void onStreamError(Torrent torrent, Exception e) { 
     Log.e("Torrent", "onStreamError", e); 
     button.setText("Start stream"); 
    } 

    @Override 
    public void onStreamReady(Torrent torrent) { 
     progressBar.setProgress(100); 
     Log.d("Torrent", "onStreamReady: " + torrent.getVideoFile()); 


     final String UrlFinalTorrent = torrent.getVideoFile().toString(); 

     button2.setVisibility(View.VISIBLE); 

     button2.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(getActivity(), MainActivity.class); 
       intent.putExtra("url", UrlFinalTorrent); 
       startActivity(intent); 
      } 
     }); 


    } 
    @Override 
    public void onStreamProgress(Torrent torrent, StreamStatus status) { 
     if(status.bufferProgress <= 100 && progressBar.getProgress() < 100 && progressBar.getProgress() != status.bufferProgress) { 
      Log.d("Torrent", "Progress: " + status.bufferProgress); 
      progressBar.setProgress(status.bufferProgress); 
     } 
    } 

    @Override 
    public void onStreamStopped() { 
     Log.d("Torrent", "onStreamStopped"); 
    } 
} 

私は問題はここから来ていると思う:

 final String UrlFinalTorrent = torrent.getVideoFile().toString(); 

    button2.setVisibility(View.VISIBLE); 

    button2.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(getActivity(), MainActivity.class); 
      intent.putExtra("url", UrlFinalTorrent); 
      startActivity(intent); 
     } 
    }); 

が、私が言ったように私はAndroidデバイス上のエミュレータ上のすべてのものを試してみましたが、物事が働いている。しかし、このエラーはSamsungのデバイスに表示されます。 ありがとうございます。

答えて

2

変数はmOnClickListenerにインスタンス化された匿名の内部クラスをスタックトレースで指しているようです。これは(スタックトレースによって示される)クラスTorrentPlayerFragmentに現れる最初の内部クラスであり、NPEをスローすると報告されたメソッドの呼び出しを含んでいます。android.os.Bundle.getString(java.lang.String)具体的には、

  Bundle args = getArguments(); 
      mStreamUrl = args.getString("url"); 

それはが影響を受ける環境でnullを返していることはかなり可能性が高いようです。これはAndroid Fragment getArguments() returns nullと関連しているようですが、状況や解決策が同じであるとは確信できません。

+0

ご質問ありがとうございます。なぜ特定のものがAndroidデバイスを動作させているのですか?あなたは何をお勧めしますか?バンドルを交換しますか? –

+0

@DiaconuLiviu、より広い範囲が不明であるため、あなたの特定の状況に最適な解決策が何であるかはわかりません。しかし、私がリンクしている他のSOの質問に対する回答には、あなたが考慮すべきいくつかのアドバイスがあります。 –

+0

私は文字列urlが有効ではない、Javaの間違ったページを解決しました。 –

関連する問題