gpt4 book ai didi

android - getIntent.getExtras() 不返回 null 但没有值。

转载 作者:搜寻专家 更新时间:2023-11-01 09:04:07 28 4
gpt4 key购买 nike

问题很简单,我不是 Android 的新手,但我无法在我的生活中检索通过 Intent 从 Activity A 传递到 Activity B 的额外信息。

参见 Activity A:这实际上是一个 ListFragment,它实现了 onListItemClick() 以通过 Intent 启动另一个 Activity 。

@Override 
public void onListItemClick(ListView l, View v, int position, long id) {
Log.i("FragmentList", "Item clicked: " + id);
Intent i = new Intent(getActivity(), ExpandedTweetView.class);
twitter4j.Status status = adapter.getItem(position);

Bundle extras = new Bundle();
extras.putString(KEY_TEXT, status.getText());
extras.putString(KEY_HANDLE, status.getUser().getScreenName());
extras.putString(KEY_NAME, status.getUser().getName());
extras.putString(KEY_TIMESTAMPS, status.getCreatedAt().toString());
extras.putLong(KEY_RETWEETS, status.getRetweetCount());

i.putExtra(KEY_EXTRAS, extras);
startActivity(i);
}

这部分工作正常,我使用 Log.v(TAG, "status.getText()"测试它以确保错误不是来自 Adapter 通过 getItem 传递一个空项目().

这是 Activity B 的代码:

public class ExpandedTweetView extends Activity {

TextView text;
TextView name;
TextView handle;
TextView createdAt;
TextView retweets;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.expanded_list_item);

Bundle extras = getIntent().getExtras();

ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);

text = (TextView) findViewById(R.id.h_content);
name = (TextView) findViewById(R.id.h_name);
handle = (TextView) findViewById(R.id.h_handle);
createdAt = (TextView) findViewById(R.id.h_timestamp);
retweets = (TextView) findViewById(R.id.h_retweet_count);

if(extras != null) {
text.setText(extras.getString(TimelineFragment.KEY_TEXT));
name.setText(extras.getString(TimelineFragment.KEY_NAME));
handle.setText(extras.getString(TimelineFragment.KEY_HANDLE));
createdAt.setText(extras.getString(TimelineFragment.KEY_TIMESTAMPS));
retweets.setText(String.valueOf(extras.getLong(TimelineFragment.KEY_RETWEETS)));
}
}

如您所见,我相信我使用了正确的代码来获得附加功能,在其他应用程序上使用相同的代码也能正常工作。不知道为什么,当通过 Intent 创建 ExpandedTweetView 时,所有 textView 都是空的。请参阅:https://www.dropbox.com/s/pso6jbyn6rpks9n/empty_activity.png

更奇怪的是,我最初尝试通过调用以下命令来检查包是否为空:

if (extras == null) {
Log.v(TAG, "Extras are empty :(");
}

但是该行从未执行过,这意味着该包不为空。我还认为可能用于从包中检索各个字符串的键不匹配;然而,为了解决这个问题,我决定创建可以在双方都使用的常量。正如您在代码中看到的那样,设置 Extra 的 key 和检索 Extra 的 key 都是相同的。

关于到底发生了什么有什么想法吗?

最佳答案

Bundle extras = getIntent().getExtras();
if (extras != null) {
extras = extras.getBundle("KEY_EXTRAS");
String status = extras.getString("KEY_TEXT");
}

关于android - getIntent.getExtras() 不返回 null 但没有值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13226740/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com