GetExtras不工作 [英] GetExtras not working
问题描述
我想从活动A发送给额外B.
发送部分是好的,而变量不为空,但我想不通我怎么可以让他们在活动B.
这是送的code:
公共无效sendToFavorites(上下文的背景下){
串VID,vThumbnail,vTitle;
VID = sendResult.getId()getVideoId()。
vThumbnail = sendResult.getSnippet()getThumbnails()getMedium()的getURL()。;
vTitle = sendResult.getSnippet()的getTitle()。
意图最爱=新意图(背景下,Favorites.class);
fav.putExtra(称号,vTitle);
fav.putExtra(缩略图,vThumbnail);
fav.putExtra(ID,VID);
}
这是得到的code:
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.favorites_layout);
getSupportActionBar()的setTitle(最爱)。
initializeViews();
//////////////////
捆绑额外= getIntent()getExtras()。
vidID = extras.getString(ID);
vidTitle = extras.getString(标题);
vidThumbnail = extras.getString(缩略图);
loadFavorites();
}
在这里,我开始活动B:
@覆盖
公共布尔onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.favorites:
意图=新意图(这一点,Favorites.class);
startActivity(意向);
}
返回super.onOptionsItemSelected(项目);
}
由于某种原因,应用程序崩溃时,我发起活动B有没有日志。
我是什么拨错在做什么?
公共无效sendToFavorites(上下文的背景下){
串VID,vThumbnail,vTitle;
VID = sendResult.getId()getVideoId()。
vThumbnail = sendResult.getSnippet()getThumbnails()getMedium()的getURL()。;
vTitle = sendResult.getSnippet()的getTitle()。
意图最爱=新意图(背景下,Favorites.class);
fav.putExtra(称号,vTitle);
fav.putExtra(缩略图,vThumbnail);
fav.putExtra(ID,VID);
}
您意图
对象最爱
仅适用于本方法。正如你永远不会调用 startActivity(最爱)
在此方法中,那么无论你开始活动B
将不包括您的捆绑数据。有两种可能的选择 - 要么申报最爱
作为一个类变量以后引用它,像这样:
公共类MyClass的扩展... {意图最爱;
// ...
公共无效sendToFavorites(上下文的背景下){
串VID,vThumbnail,vTitle;
VID = sendResult.getId()getVideoId()。
vThumbnail = sendResult.getSnippet()getThumbnails()getMedium()的getURL()。;
vTitle = sendResult.getSnippet()的getTitle()。
最爱=新意图(背景下,Favorites.class);
fav.putExtra(称号,vTitle);
fav.putExtra(缩略图,vThumbnail);
fav.putExtra(ID,VID);
}//...later,点击一个按钮期间....
如果(最爱!= NULL){
startActivity(收藏);
}
或者,就像我会preFER,从你的 sendToFavourites()
方法放置逻辑点击事件里面:
@覆盖
公共布尔onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.favorites:
串VID,vThumbnail,vTitle;
VID = sendResult.getId()getVideoId()。
vThumbnail = sendResult.getSnippet()getThumbnails()getMedium()的getURL()。;
vTitle = sendResult.getSnippet()的getTitle()。
意图最爱=新意图(背景下,Favorites.class);如果这个类扩展活动//能使用的本,而不是背景
fav.putExtra(称号,vTitle);
fav.putExtra(缩略图,vThumbnail);
fav.putExtra(ID,VID);
startActivity(收藏);
}
返回super.onOptionsItemSelected(项目);
}
I'm trying to send Extras from Activity A to B. The sending part is good, and the variables are not nulls, but I can't figure out how can I get them in Activity B. This is the code of sending:
public void sendToFavorites(Context context){
String vID,vThumbnail,vTitle;
vID = sendResult.getId().getVideoId();
vThumbnail = sendResult.getSnippet().getThumbnails().getMedium().getUrl();
vTitle = sendResult.getSnippet().getTitle();
Intent fav = new Intent(context,Favorites.class);
fav.putExtra("title",vTitle);
fav.putExtra("thumbnail",vThumbnail);
fav.putExtra("id",vID);
}
This is the code of getting:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favorites_layout);
getSupportActionBar().setTitle("Favorites");
initializeViews();
//////////////////
Bundle extras = getIntent().getExtras();
vidID = extras.getString("id");
vidTitle = extras.getString("title");
vidThumbnail = extras.getString("thumbnail");
loadFavorites();
}
Here I start Activity B:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.favorites:
intent = new Intent(this, Favorites.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
for some reason, the application crashes when I'm launching Activity B with NO log..
What am I doing worng?
public void sendToFavorites(Context context){
String vID,vThumbnail,vTitle;
vID = sendResult.getId().getVideoId();
vThumbnail = sendResult.getSnippet().getThumbnails().getMedium().getUrl();
vTitle = sendResult.getSnippet().getTitle();
Intent fav = new Intent(context,Favorites.class);
fav.putExtra("title",vTitle);
fav.putExtra("thumbnail",vThumbnail);
fav.putExtra("id",vID);
}
Your Intent
object fav
only applies to this method. As you never call startActivity(fav)
in this method, then however you are starting Activity B
will not include your bundled data. There are two possible alternatives - either declare fav
as a class variable and reference it later, like so:
public class MyClass extends ... {
Intent fav;
//...
public void sendToFavorites(Context context){
String vID,vThumbnail,vTitle;
vID = sendResult.getId().getVideoId();
vThumbnail = sendResult.getSnippet().getThumbnails().getMedium().getUrl();
vTitle = sendResult.getSnippet().getTitle();
fav = new Intent(context,Favorites.class);
fav.putExtra("title",vTitle);
fav.putExtra("thumbnail",vThumbnail);
fav.putExtra("id",vID);
}
//...later, during a button click....
if (fav != null) {
startActivity(fav);
}
Or, as I would prefer, place the logic from your sendToFavourites()
method inside your click event:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.favorites:
String vID,vThumbnail,vTitle;
vID = sendResult.getId().getVideoId();
vThumbnail = sendResult.getSnippet().getThumbnails().getMedium().getUrl();
vTitle = sendResult.getSnippet().getTitle();
Intent fav = new Intent(context, Favorites.class); //Could use "this" instead of context if this class extends Activity
fav.putExtra("title",vTitle);
fav.putExtra("thumbnail",vThumbnail);
fav.putExtra("id",vID);
startActivity(fav);
}
return super.onOptionsItemSelected(item);
}
这篇关于GetExtras不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!