2016-08-21 4 views
0

私はすでにいくつかの例を見ましたが、フラグメントの新しいインスタンスを作成するため、使用できません。Androidのデータをアクティビティからフラグメントに移動する新しいインスタンスを作成しないで

MainActivityのボタンをクリックすると、FragmentActivityが読み込み3フラグメントになります。

MainActivityからFragment_Bにipとportを渡したいとします。

私のやり方が機能していません。

のjava.lang.NullPointerException:上の仮想メソッドを呼び出すための試み 'はjava.lang.String型android.os.Bundle.getString(java.lang.String)を' NULLオブジェクト参照

MainActivity:

public class MainActivity extends Activity { 

TextView response; 
EditText editTextAddress, editTextPort; 
Button buttonConnect, buttonClear; 
public static String ip = "192.168.2.2"; 
public static int porta = 6000; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_main); 

    editTextAddress = (EditText) findViewById(R.id.txt_ip); 
    editTextPort = (EditText) findViewById(R.id.txt_porta); 
    buttonConnect = (Button) findViewById(R.id.btn_conetar); 
    //buttonClear = (Button) findViewById(R.id.clearButton); 


    buttonConnect.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View arg0) { 

      ip = editTextAddress.getText().toString(); 
      porta = Integer.parseInt(editTextPort.getText().toString()); 


      Fragmento_B f = new Fragmento_B(); 
      Bundle args = new Bundle(); 
      args.putString("IP",ip); 
      args.putInt("PORTA",porta); 
      f.setArguments(args); 

      Intent i = new Intent(MainActivity.this,Main2Activity.class); 
      startActivity(i); 


     } 
    }); 

} 

フラグメント活性(これはすべてのフラグメントをロード)

この

Intent i = new Intent(MainActivity.this,Main2Activity.class); 
i.putExtra("IP",ip); 
i.putExtra("PORTA",porta); 
startActivity(i); 

MainActivityからMain2Activity

args.putString("IP",ip); 
args.putInt("PORTA",porta); 

に意図で

public class Main2Activity extends FragmentActivity { 

private TabLayout mTabLayout; 
private ViewPager mViewPager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_main2); 

    mTabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    mViewPager = (ViewPager) findViewById(R.id.view_pager); 

     mViewPager.setAdapter(new FragmentoAdapter(getSupportFragmentManager(),getResources().getStringArray(R.array.tiles_tab))); 
     mViewPager.setOffscreenPageLimit(3); 

     mTabLayout.setupWithViewPager(mViewPager); 


    } 


} 

FRAGMENT B

答えて

0
@Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState)  { 

    String ip = getArguments().getString("IP"); 
    int porta = getArguments().getInt("PORTA"); 

} 

パス値は、にrecive

String ip = getIntent().getStringExtra("IP"); 
String porta = getIntent().getStringExtra("PORTA"); 

ここではそれを追加して、ビューページャーでそのフラグメントを使用します。

Fragmento_B f = new Fragmento_B(); 
Bundle args = new Bundle(); 
args.putString("IP",ip); 
args.putInt("PORTA",porta); 
f.setArguments(args); 

Look here its full example

+0

これが解決策であります –

関連する問題