Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过意图发送数据_Java_Android_Android Intent_Android Activity - Fatal编程技术网

Java 通过意图发送数据

Java 通过意图发送数据,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,存在ListView,它必须在单击项目后将数据发送到另一个活动 这将发送数据: listFavorites.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> listView, View v, int position, long id) { Intent intent = ne

存在ListView,它必须在单击项目后将数据发送到另一个活动

这将发送数据:

listFavorites.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> listView, View v, int position, long id) {

        Intent intent = new Intent(ListWords.this, MainActivity.class);
        intent.putExtra(MainActivity.EXTRA_MESSAGE, Long.toString(id));
        startActivity(intent);


    }
此部分工作正常:if(id==0&&getIntent().getExtras().get(额外消息)!=null)

但在这里它不会检查null: getIntent().getExtras().get(额外消息)=null

它显示为错误 尝试在空对象引用上调用虚拟方法“java.lang.Object android.os.Bundle.get(java.lang.String)”


Thanx在此之前,我感谢您提供的任何帮助和建议,因为您将long值转换为String,它不能为null,因为long的值是通过显示的项目列表预定义的。

好吧,我的第一次尝试是重构if块,这样它可以更有效:

Intent intent=getIntent();
if(intent.getExtras()!=null)
{    
   if(id>=0&&intent.getExtras().get(EXTRA_MESSAGE)==null) {
       return PageFragment.newInstance(id);
   }else if(id==0&&intent.getExtras().get(EXTRA_MESSAGE)!=null){
       int drinkID = (Integer) intent.getExtras().get(EXTRA_MESSAGE);
       return PageFragment.newInstance(drinkID);}
    else{
       return PageFragment.newInstance(id);
   }
}
if(id==0&&getIntent().getExtras().get(EXTRA_MESSAGE)!=null)
{
    int drinkID = (Integer) getIntent().getExtras().get(EXTRA_MESSAGE);
    return PageFragment.newInstance(drinkID);
}
else
{
    return PageFragment.newInstance(id);
}

你可能会问,为什么?因为如果我们检查第一个和第三个if语句的结果,您将返回完全相同的内容,因此第一个if块是无用的。现在,这样做效率更高,您可以删除技术上从未评估过的if语句。

thx为了快速响应,我写了intent.putExtra(MainActivity.EXTRA_MESSAGE,(int)id);但是它仍然会出错id是一个长的值,所以您将一个较大的值向下转换为一个较小的值,这可能是问题所在。只需删除(int)强制转换。但是在调试代码时,它会返回id,如果(id==0&&getIntent().getExtras().get(EXTRA_MESSAGE)!=null)工作正常,那么现在的主要问题是什么,以便我们能够解决itthx以获得快速响应。你看,我有两种发送数据的方法:第一种是通过意图,正如我写的,第二种是通过id->PageFragment.newInstance(int id)…第一种是当我点击项目时,第二种是当应用程序启动时,它必须以id=1的形式向我显示第一页。所以id可能等于2,3,4,5,因为页面滑动……无论如何,Mansoor的答案是有帮助的,现在它工作了,但这需要很长时间,也许我应该减少一些无用的代码,lolthanx很多,你能解释一下是什么问题吗?
if(id==0&&getIntent().getExtras().get(EXTRA_MESSAGE)!=null)
{
    int drinkID = (Integer) getIntent().getExtras().get(EXTRA_MESSAGE);
    return PageFragment.newInstance(drinkID);
}
else
{
    return PageFragment.newInstance(id);
}