如何在android中为url类型连接多个字符串

时间:2015-03-25 02:55:23

标签: android android-intent

我开发了一个搜索和播放视频的应用程序,在我的项目中,我面临着将搜索到的视频的路径传递给视频播放活动的困难。当我将视频的实际路径直接放入播放器活动时,它会视频,但如果我从意图中获取视频名称,然后我将其转换为该视频的路径。它不会变得很好。我的程序没有显示任何错误 我无法获取我从第一个活动传递的意图数据,当我将该数据设置为textview时,它显示为“null”请帮助我恢复此问题

这是我的第一项活动

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.我应该如何连接使用文件路径字符串获取意图数据。

请帮助我 我很震惊。

1 个答案:

答案 0 :(得分: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,所以我宁愿将其提取到可编辑变量并检查它是否不是null而不是空。