开发者

How to pass Intent Extras?

开发者 https://www.devze.com 2023-03-22 05:56 出处:网络
public class Menus extends Activity { //set constants for MediaStore to query, and show videos private final static Uri MEDIA_EXTERNAL_CONTENT_URI = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
     public class Menus extends Activity {
//set constants for MediaStore to query, and show videos
private final static Uri MEDIA_EXTERNAL_CONTENT_URI = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
private final static String _ID = MediaStore.Video.Media._ID;
private final static String MEDIA_DATA = MediaStore.Video.Media.DATA;
//flag for which one is used for images selection
private GridView _gallery; 
private Cursor _cursor;
private int _columnIndex;
private int[] _videosId;
private Uri _contentUri;


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

    _context = getApplicationContext();
    _gallery = (GridView) findViewById(R.id.videoGrdVw);
    //set default as external/sdcard uri
    _contentUri = MEDIA_EXTERNAL_CONTENT_URI;
    //initialize the videos uri 
    //showToast(_contentUri.getPath());
    initVideosId();
    //set gallery adapter
    setGalleryAdapter();
}
private void setGalleryAdapter() {
    _gallery.setAdapter(new VideoGalleryAdapter(_context));
    _gallery.setOnItemClickListener(_itemClickLis);

}
private AdapterView.OnItemClickListener _itemClickLis = new OnItemClickListener() 
{
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
    {
        // Now we want to actually get the data location of the file
        String [] proj={MEDIA_DATA};
        // We request our cursor again
        _cursor = managedQuery(_contentUri,
                proj, // Which columns to return
                null,       // WHERE clause; which rows to return (all rows)
                null,       // WHERE clause selection arguments (none)
                null); // Order-by clause (ascending by name)
        // We want to get the column index for the data uri
        int count = _cursor.getCount();
        //
        _cursor.moveToFirst();
        //
        _columnIndex = _cursor.getColumnIndex(MEDIA_DATA);
        // Lets move to the selected item in the cursor
        开发者_开发问答_cursor.moveToPosition(position);

        Intent i = new Intent();
        i.putExtra("mnt/sdcard-ext", _ID);
        startActivity("com.ave.EDITOR");


    }
};

The Above is part of my Second Activity. Basically This code Displays Video Thumbnails from the SD card of the phone. Anyways, When i click on a thumbnail i want the Item in the list clicked to open to a new activity posted below, which is a ViewView.

public class Editor extends Activity {

ImageButton video1;
int isClicked = 0;
ImageButton audio;
int isClicked1 = 0;
private String path = "mnt/sdcard-ext";
private VideoView mVideoView;

    @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    getWindow().setFormat(PixelFormat.TRANSLUCENT);
    setContentView(R.layout.editor);
    mVideoView = (VideoView) findViewById(R.id.videoView);

    int data = getIntent().getExtras("mnt/sdcard-ext") .getInt("com.ave.EDITOR");

    if (path == "mnt/sdcard-ext") {
        // Tell the user to provide a media file URL/path.
        Toast.makeText(
                Editor.this,
                "Please edit VideoViewDemo Activity, and set path"
                        + " variable to your media file URL/path",
                Toast.LENGTH_LONG).show();

    } else {

        /*
         * Alternatively,for streaming media you can use
         * mVideoView.setVideoURI(Uri.parse(URLstring));
         */
        mVideoView.setVideoPath(path);
        mVideoView.setMediaController(new MediaController(this));
        mVideoView.requestFocus();



    video1 = (ImageButton) findViewById(R.id.video1);
    video1.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            if (isClicked == 0) {
                video1.setImageResource(R.drawable.video_pressed);
                isClicked = 1;
            } else {
                video1.setImageResource(R.drawable.video1);
                isClicked = 0;
            }
          }
     });

    audio = (ImageButton) findViewById(R.id.audio);
    audio.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            if (isClicked1 == 0) {
                audio.setImageResource(R.drawable.audio_pressed);
                isClicked1 = 1;
            } else {
                audio.setImageResource(R.drawable.audio);
                isClicked1 = 0;
            }
          }
      });
    }
  }
}

As you can see I don't know how to properly pass the intent extras, nor do i know how to get them from the 3rd activity. All help is appreciated. Thank you.

====== Android Manifest ====== (This is not the full manifest file)

<activity android:name=".Menus" android:label="@string/app_name" android:screenOrientation="landscape" >
      <intent-filter>
            <action android:name="com.ave.CLEARSCREEN" />
            <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
</activity>
<activity android:name=".Editor" android:screenOrientation="landscape" >
      <intent-filter>
            <action android:name="com.ave.EDITOR" />
            <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
</activity>
</application>
</manifest>


Intent i = new Intent("com.ave.EDITOR");
i.putExtra("mnt/sdcard-ext", _ID);
startActivity(i);

and in second activity in onCreate method:

String data = getIntent().getStringExtra("mnt/sdcard-ext");


Try this: int data = getIntent().getExtras() .getInt("mnt/sdcard-ext");


You need to call putExtra() on the Intent instance you are passing to startActivity(). In the second activity, you can call getIntent() (a member of Activity) to get the Intent that started the Activity. Do it in onCreate(). Then, it will return you an Intent instance, which you can call get<type>Extra() on depending on what type of extra you packed in there. If your requirements are beyond the basic types supported (things that already implement Parcelable, and the fundamental java types) then you will need to write your own class and implement the Parcelable interface.

See the Intent doc for more info.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号