【问题标题】:How to concatenate multiple strings in android for url types如何在android中为url类型连接多个字符串
【发布时间】:2015-03-25 02:55:22
【问题描述】:

我有一个开发应用程序来搜索和播放视频,在我的项目中,我很难将搜索到的视频的路径传递给视频播放活动。当我将视频的实际路径直接放入播放器活动时,它会播放视频,但如果我从意图中获取视频名称,然后我将其转换为该视频的路径。它没有得到paly。我的程序没有显示任何错误 我无法获得从第一个活动传递的意图数据,当我将该数据设置到 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.我应该如何将获取意图数据与文件路径字符串连接起来。

请帮助我 我对此感到震惊。

【问题讨论】:

  • 我没有发现任何明显的问题。您是否尝试过注销并将准备好的字符串与您传递给 dataSource 调用的字符串进行比较?另外,你应该考虑看看 Android VideoView,它比 SurfaceViews 更容易使用
  • 我使用视频视图,但它不播放我的视频请建议任何链接以在我的应用中使用视频视图

标签: android android-intent


【解决方案1】:

问题在于 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 变量并检查它是否不为 null 且不为空。

【讨论】:

  • 我很高兴您的问题现在无效:) 请接受答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 2011-11-06
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多