0

좋아, 나는 그것이 더 간단하고 내 이전 게시물에 답변을 기반으로 업데이트 할했습니다 : Adding Assigned Values in Spinner NullPointerException[해결]

나는 MainAcitivty이ViewPager을 사용합니다. 나는 내가 을 내 MainActivity 2 개 조각 (프라와 FragB) 내 프라에서

있습니다. FragB에있는 동안 나는 TextViewButton을 가지고 있습니다.

이제 내 회 전자에서 "Hello"를 선택하면 내 int a의 값은 5가됩니다. 그리고 단추를 클릭하면 5가 TextView에 표시됩니다. 여기

내 코드입니다 :

프라

public class FragA extends Fragment { 

    Spinner spinner1; 
    String s1; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.fraga, container, false); 

     spinner1 = (Spinner) view.findViewById(R.id.spinner1); 
     ArrayAdapter<CharSequence> adapter_a = ArrayAdapter.createFromResource(getActivity(), R.array.spinner1,android.R.layout.simple_spinner_item); 
     spinner1.setAdapter(adapter_a); 

     s1 = spinner1.getSelectedItem().toString(); 

     return view; 
    } 

    public int getInt() { 

     int a = 0; 

     if(s1.equals("Hello")) { 
      a = 5; 
     } 

     return a;  
    } 

} 

MainActivity

public class MainActivity extends FragmentActivity { 

    ViewPager viewPager = null; 

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

     viewPager = (ViewPager)findViewById(R.id.pager);  
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     viewPager.setAdapter(new MyAdapter(fragmentManager)); 
    } 

    public class MyAdapter extends FragmentStatePagerAdapter { 

      public MyAdapter (FragmentManager fm) { 
       super(fm); 
      } 

      @Override 
      public Fragment getItem(int i) { 
       Fragment fragment = null; 

       if (i == 0) 
       { 
        fragment = new FragA(); 
       } 
       if (i == 1) 
       { 
        fragment = new FragB(); 
       } 
       return fragment; 
      } 

      @Override 
      public int getCount() { 
       return 2; 
      } 
     } 

    public String get() { 

     FragA FragA = new FragA(); 

     return Integer.toString(FragA.getInt()); 
    } 
} 

FragB

그런데 85,349,

이 내 코드 때 나는 프라에서 FragB에의 값을 전달 아무 문제 : 내 스피너를 포함하지 않는,

public int getInt() { 

     int a = 5; 

     return a;  
    } 

하지만 그게 내가하고 싶은 아니다 . 누군가가 내 문제에 대한 해결책을 줄 수 있기를 바랍니다. 언젠가 이걸 붙잡 았어. 미리 감사드립니다.

답변

0

조각 사이에서 통신하는 간단한 방법은입니다. 여기는 입니다.

MainActivity에서 조각의 정적 인스턴스를 유지하십시오. 이제, 프라에서 FragB에 액세스 비슷한 작성하려는 경우

public static FragA fragmentA; 
public static FragB fragmentB; 

:

http://developer.android.com/training/basics/fragments/communicating.html

: 여기

((MainActivity) getActivity()).fragmentB.setSomething(); 

그리고는 조각 사이에 통신 할 수 더 나은/올바른 방법입니다

+0

조각과 통신하는 데 문제가 없습니다. 내 문제는, 내가 그것을 옮기려고 할 때 스피너를 통해 설정 한 값이 NPE를 얻고 있다는 것입니다. – speedsir

+0

NPE는 어떤 라인을 제공합니까? 어딘가에서 전체 프로젝트를 업로드 할 수 있습니까? – StarDust

+0

여기에 "s1 = spinner1.getSelectedItem(). toString();" 내가 업로드 할 수있는 곳이 어디인지 모르겠다. 나를 위해 할거야? hehehe – speedsir