2011-07-20 31 views
0
 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。如何傳遞Intent Extras?

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清單======(這不是完整的清單文件)

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

回答

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

和第二活動onCreate方法:

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

好吧,所以沒有我得到「轉換爲達爾文格式失敗,1錯誤」這是什麼意思? – Cataroux

+0

@Cataroux嘗試清理您的項目並重建它。 – jamapag

+0

@Cataroux我編輯了第一個代碼片段。嘗試新的。 – jamapag

0

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

+0

那基本上我已經。但我沒有工作。 – Cataroux

+0

你的代碼中的一個是:'int data = getIntent()。getExtras(「mnt/sdcard-ext」).getInt(「com.ave.EDITOR」);'這與我建議的不一樣。您還應該在第一次活動中通過jamapag進行修改[建議](http://stackoverflow.com/questions/6767596/how-do-i-these-pass-intent-extras/6767729#6767729)。 – Mandel

0

你需要調用putExtra()的意圖您傳遞給startActivity()的實例。在第二項活動中,您可以致電getIntent()(活動的成員)獲取開始活動的Intent。在onCreate()。然後,它會返回給您一個Intent實例,您可以調用get<type>Extra(),具體取決於您打包的額外類型。如果你的需求超出了支持的基本類型(已經實現了Parcelable的東西,以及基本的Java類型),那麼你需要編寫自己的類並實現Parcelable接口。

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

相關問題