2013-03-07 87 views
0

當我點擊按鈕1Button我看不到任何Toast。我禁用了EditText事件,即使這樣我也看不到它。 類「View1」是pagerView的一部分。事件監聽器不能在片段中工作

public class View1 extends Fragment{ 

    ImageView album; 
    Button b1; 

    public View1(){} 

    public void OnCreate(Bundle SavedInstanceState) { 
     super.onCreate(SavedInstanceState); 

       b1.findViewById(R.id.button1); 

       b1.setOnClickListener(new OnClickListener(){ 
         @Override 
         public void onClick(View v) { 
          Toast.makeText(getActivity().getApplicationContext(), "asdasd", Toast.LENGTH_SHORT).show();  
         } 
        }); 
    } 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      return inflater.inflate(R.layout.view1, container, false); 
    } 

回答

4

我勸你過目一個Fragment Android的生命週期圖。

您所謂的OnCreate方法未被調用,因爲它不是FragmentonCreate回調。爲了避免這種類型的錯誤,請使用@Override註釋和適當的方法來確保您重寫該方法,而不是僅創建一個新方法。

即使你的方法會被稱爲你的代碼會拋出一個NullPointerException因爲你不初始化Button(它甚至沒有創建爲onCreateView回調onCreate後調用)。您的代碼應該是這樣的:

public class View1 extends Fragment { 

    ImageView album; 
    Button b1; 

    @Override 
    public void OnCreate(Bundle SavedInstanceState) { 
     super.onCreate(SavedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.view1, container, false); 
     b1 = (Button) v.findViewById(R.id.button1); 
     b1.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getActivity(), "asdasd", Toast.LENGTH_SHORT).show();  
      } 
     }); 
    } 
     return v; 
} 
0

您可以將您的收聽到onCreateView或onActivityCreated,它應該工作,然後