2013-05-30 70 views
1

今天我嘗試創建一個帶有片段活動的項目。我有一個MainActivity範圍FragmentActivity。 MainActvity有佈局。FragmentActivity上的按鈕不起作用

activity_main.xml中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button1" /> 

    </LinearLayout> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="2dip" 
     android:background="#000" /> 

    <FrameLayout 
     android:id="@+id/frame_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
    </FrameLayout> 

</LinearLayout> 

佈局有2個按鈕,並在這裏更換片段的FrameLayout。在MainActivity onCreate中,我插入一個片段。

MainAcivity.java

public class MainActivity extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
     ((Button) findViewById(R.id.button1)).setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Log.e("Button", "click--------------"); 
      } 
     ); 
     getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout, fragment).addToBackStack(null).commit(); 
    } 
} 

當我插入片段插入R.id.frame_layout然後我試着觸摸按鈕1,但它不響應。我在logcat中看不到它

請幫幫我!由於

+0

如果註釋掉此line //getSupportFragmentManager().beginTransaction().rep花邊(R.id.frame_layout,fragment).addToBackStack(null).commit();並按鈕點擊工作? – Thalaivar

+0

一個提示 - 一般來說,鏈接你的代碼並不是一個好主意。 –

+0

@Vinothbabu當我評論它,按鈕點擊工作。 –

回答

0

更改您的代碼,

Button btn = (Button) getActivity().findViewById(
       R.id.button1); 

btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
         Log.e("Button", "click--------------"); 

      } 
     }); 
+0

我嘗試這個,但它不工作。謝謝! –

1

在片段使用:

您的XML:

<Button 
      android:id="@+id/btnLogin" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:onClick="yourmethod" 
      android:text="Login" /> 

代碼:

public void yourmethod(View v){ 
    //dosomthing 
} 
+0

感謝您的支持!我試試這個。它拋出錯誤。找不到方法「YourMethod」 –

+0

將yourmethod(View v)放在活動中,而不是片段。 – bsautner