2017-04-04 82 views
0

我试图将数据从PageAdapter发送到一个片段两天,但没有成功。 我使用捆绑,并发送这样的:null对象的java.lang.String android.os.Bundle.getString(java.lang.String)'参考

 protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_ficha__completa); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     // Create the adapter that will return a fragment for each of the three 
     // primary sections of the activity. 
     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
     // Set up the ViewPager with the sections adapter. 
     mViewPager = (ViewPager) findViewById(R.id.container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

     nome="Chimpanze"; 

     try { 
      Bundle bundle = new Bundle(); 
      bundle.putString("Nome_animal",nome); 
      Imagem_Animal imagem = new Imagem_Animal(); 
      imagem.setArguments(bundle); 
     } catch (Exception e) { 
      Log.d(TAG_LOG,"Erro de bundle: "+e.getLocalizedMessage()); 
     } 
    } 

我的片段是这样的:

public class Imagem_Animal extends Fragment { 
    ImageView imagem_p; 
    static final String TAG ="Fragmento"; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View Layout_imagem = inflater.inflate(R.layout.fragment_imagem__animal, container, false); 
     imagem_p = (ImageView) Layout_imagem.findViewById(R.id.imagem); 
     try { 
      String nomeAnimal = getArguments().getString("Nome_animal"); 
     } catch (Exception e){ 
      Log.d(TAG, "getStirng :"+e.getMessage()); 
     } 
     return Layout_imagem; 
    } 
} 

登录:的getString:试图调用虚拟方法java.lang.String中的Android .os.BaseBundle.getString(java.lang.String)'在空对象引用

任何人都可以帮助我吗?

非常感谢你

+0

我试图从一个PageAdapter发送数据到一个片段?为什么不使用MainActivity的上下文访问数据? –

+0

发布并接受您的答案。这对未来的开发者会更有帮助。 – Noorul

回答

0

在你的片段中创建如下的函数。

public void someFunctionName(String data){ 

} 

在寻呼机适配器做下面的东西。

@Override 
public Fragment getItem(int position) { 
    Imagem_Animal ani= new Imagem_Animal(); 
    ani.someFunctionName("yourdata"); 
    return ani; 
} 

这是所有

+0

非常感谢,但我与其他sollution :) – Pickabull

1

如果该片段在MainAtivity其实pagerAdapter是。然后您可以访问场内Imagem_AnimalFragment

((MainActivity) getActivity()).nome 

而是通过它在束。

+0

非常感谢! – Pickabull

+0

我已经试过这种方式,并不断返回给我同样的错误:/ – Pickabull

+0

然后检查为什么'nome'字段是空的,如果你像上面访问它。可能是你的'Fragment'在变量初始化之前被加载。变量初始化后设置你的'PagerAdapter'。 –

相关问题