簡體   English   中英

如何通過 Intent Extras?

[英]How to pass Intent Extras?

     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");


    }
};

以上是我的第二個活動的一部分。 基本上此代碼顯示來自手機 SD 卡的視頻縮略圖。 無論如何,當我單擊縮略圖時,我希望單擊列表中的項目以打開下面發布的新活動,即 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;
            }
          }
      });
    }
  }
}

如您所見,我不知道如何正確傳遞意圖附加內容,也不知道如何從第三個活動中獲取它們。 感謝所有幫助。 謝謝你。

====== Android Manifest ======(這不是完整的清單文件)

<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>

試試這個: int data = getIntent().getExtras().getInt("mnt/sdcard-ext");

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

onCreate方法的第二個活動中:

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

您需要在傳遞給startActivity()的 Intent 實例上調用putExtra() ) 。 在第二個Activity中,可以調用getIntent() (Activity的一個成員)來獲取啟動Activity的Intent。 onCreate()中執行此操作。 然后,它將返回一個 Intent 實例,您可以調用get<type>Extra() ,具體取決於您在其中打包的額外類型。 如果您的要求超出了支持的基本類型(已經實現 Parcelable 的東西,以及基本的 java 類型),那么您將需要編寫自己的 class 並實現Parcelable接口。

有關更多信息,請參閱Intent文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM