2015-03-25 49 views
0

我開發了一個應用程序來搜索和播放視頻,在我的項目中,我面臨着難以將搜索到的視頻路徑傳遞到視頻播放活動的難題。當我將視頻的實際路徑直接放入播放器活動中時,它會記錄視頻,但是如果我從意圖獲取視頻名稱,然後將其轉換爲該視頻的路徑。它不會得到paly。和我的程序不顯示任何錯誤 我不能讓我從它顯示「空」的第一個活動傳遞時,我設置的數據到TextView的請幫我恢復這個問題如何在android中爲url類型連接多個字符串

這是我的第一個意向數據活動

public class FirstActivity extends Activity { 

EditText et; 
Button bt; 
String filename; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.firstscreen); 

    et = (EditText)findViewById(R.id.editText1); 


    filename = et.getText().toString(); 

    bt = (Button)findViewById(R.id.button1); 

    final Intent i = new Intent(this, MainActivity.class); 
    i.putExtra("text_label", filename); 



    bt.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

      startActivity(i); 

     } 

    }); 
    } 

}

這是我的第二個活動視頻播放器

public class MainActivity extends Activity implementsSurfaceHolder.Callback{ 

    MediaPlayer mediaPlayer; 
    urfaceView surfaceView; 
    SurfaceHolder surfaceHolder; 
    boolean pausing = false;; 

String uriString; 

String stringPaths= "/sdcard/video/"; 
String stringPath; 

    /** Called when the activity is first created. */ 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button buttonPlayVideo = (Button)findViewById(R.id.playvideoplayer); 
    Button buttonPauseVideo = (Button)findViewById(R.id.pausevideoplayer); 

    Intent i = getIntent(); 
    uriString = i.getStringExtra("text_label"); 
     stringPath = stringPaths+uriString+".3gp"; 

    getWindow().setFormat(PixelFormat.UNKNOWN); 
    surfaceView = (SurfaceView)findViewById(R.id.surfaceview); 
    surfaceHolder = surfaceView.getHolder(); 
    surfaceHolder.addCallback(this); 
    surfaceHolder.setFixedSize(176, 300); 
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    mediaPlayer = new MediaPlayer(); 

    buttonPlayVideo.setOnClickListener(new Button.OnClickListener(){ 

@Override 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 
    pausing = false; 

    if(mediaPlayer.isPlaying()){ 
    mediaPlayer.reset(); 
    } 

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mediaPlayer.setDisplay(surfaceHolder); 

    try { 
mediaPlayer.setDataSource(stringPath); 
    mediaPlayer.prepare(); 
    } catch (IllegalArgumentException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (IllegalStateException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 

    mediaPlayer.start(); 


    }}); 

buttonPauseVideo.setOnClickListener(new Button.OnClickListener(){ 

@Override 
public void onClick(View v) { 
// TODO Auto-generated method stub 
if(pausing){ 
pausing = false; 
mediaPlayer.start(); 
} 
else{ 
pausing = true; 
    mediaPlayer.pause(); 
    } 
    }}); 

    } 



@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width, 
int height) { 
// TODO Auto-generated method stub 

} 

@Override 
public void surfaceCreated(SurfaceHolder holder) { 
// TODO Auto-generated method stub 

} 

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
    // TODO Auto-generated method stub 

    } 
    } 

所以這裏是我的曲我提出 1.我是否正確地將意圖傳遞給第二項活動。 2.我應該如何連接獲取意圖數據與文件路徑字符串。

請幫我一下 即時通訊。

+0

我沒有看到任何明顯的問題。您是否嘗試過註銷並比較準備好的字符串與傳入dataSource調用的字符串?另外,你應該考慮看看Android VideoView,它比SurfaceViews更容易使用 – 2015-03-25 03:05:07

+0

我使用視頻視圖,但它不會播放我的視頻,請在我的應用程序中建議任何鏈接以使用視頻視圖 – 2015-03-25 03:40:07

回答

0

問題在於onCreate方法 - 您的意圖是在每次創建活動時創建的,但未向用戶顯示,因此TextView爲空。

嘗試在onClick中增加額外的意圖 - 並且您還可以檢查textView是否爲空。這將是這樣的:

bt.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 
     filename = et.getText().toString(); 
     Intent i = new Intent(FirstActivity.this, MainActivity.class); 
     i.putExtra("text_label", filename); 
     startActivity(i); 
    } 
}); 

您仍然可以創建在onCreate方法的範圍意圖保持它的決賽,但在onclick方法分配額外的費用。還可以考慮et.getText()可以爲null,而et.getText()。toString()可以產生NullPointerException,所以我寧願將它提取到Editable變量,並檢查它是否不爲空而不是空。

+0

非常感謝您... 。你的解決方案解決我的問題... – 2015-03-25 13:12:47

+0

我很高興你的問題現在是無效的:)請接受答案! – 2015-03-25 13:43:19