2017-04-04 12 views
0

PageAdapterからフラグメントにデータを送信しようとしましたが、2日間は成功しませんでした。 私はバンドルを使用して、このように送っています: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で.os.BaseBundle.getString(java.lang.String) 'nullオブジェクト参照の場合

誰かが私を助けますか?

ありがとうございました

+0

PageAdapterからフラグメントにデータを送信しようとしていますか? MainActivityのコンテキストを使ってデータにアクセスするのはなぜですか? –

+0

あなたの回答を投稿して受け入れてください。それは将来の開発者にとってより役立つでしょう。 – Noorul

答えて

0

以下のようにフラグメントを作成してください。

public void someFunctionName(String data){ 

} 

ポケットベルアダプターでは、以下のようにします。フラグメントはバンドルにそれを渡す代わり

((MainActivity) getActivity()).nome 

ようImagem_AnimalFragmentの内側にあなたのMainAtivity実際pagerAdapterがである。そして、あなたがアクセスできるフィールドである場合は、すべての

+0

ありがとう、私は他のsollutionでやったよ:) – Pickabull

1

をだ

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

+0

ありがとう! – Pickabull

+0

私はこの方法で試してみて、私に同じエラーを返し続けています:/ – Pickabull

+0

それで、上記のように 'nome'フィールドが空であるのを確認してください。変数が初期化される前に 'Fragment'が読み込まれることがあります。変数が初期化された後に 'PagerAdapter'を設定してください。 –

関連する問題