2012-05-30 95 views
0

我創建了一個片段擴展類調用佈局如下通話片段問題按鈕的onclick

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/date_time_label" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="200dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="32dp" 
     android:textStyle="bold" 

     android:text="time_label" 
     /> 

    <TextView 
     android:id="@+id/last_view_time" 
     android:layout_toRightOf="@+id/date_time_label" 
     android:layout_alignBaseline="@+id/date_time_label" 
     android:layout_marginLeft="8dip" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="32dp" 

     /> 

</LinearLayout> 



package com.appnetics; 

import java.text.SimpleDateFormat; 
import java.util.Date; 



import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 




/** 
* DateTime 
*/ 
public class details extends Fragment { 
    private static String getDateTimeString(Date time) { 
     return new SimpleDateFormat("d MMM yyyy HH:mm:ss") 
      .format(time); 
    } 

    private final String time = getDateTimeString(new Date()); 

    /** @see android.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) */ 
    @Override 
    public View onCreateView(
     LayoutInflater inflater, 
     ViewGroup container, 
     Bundle b) 
    { 
     View view = inflater.inflate(
      R.layout.details, 
      container, 
      false); //!!! this is important 

     ((TextView) view.findViewById(R.id.last_view_time)) 
      .setText(time); 

     return view; 
    } 
} 

現在使用它,我在按鈕的單擊事件創建佈局這樣

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 

    <Button 
     android:id="@+id/btn_showdetails" 
     android:layout_width="100dip" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="110dip" 
     android:layout_marginTop="15dip" 
     android:text="Show Details" /> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:id="@+id/my_parent_layout" 
    > 
    </LinearLayout> 



</LinearLayout> 

我說

setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 

       FragmentManager fragmentManager = getFragmentManager(); 
         FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
         details fragment = new details(); 
         fragmentTransaction.add(R.id.my_parent_layout, fragment); 
         fragmentTransaction.commit(); 


      } 
     }); 

但它引發錯誤 方法GE tFragmentManager()是未定義的類型新View.OnClickListener(){}

任何知道如何解決

+1

'getApplicationContext()。getFragmentManager( );' –

+0

給出錯誤方法getFragmentManager()未定義類型上下文 – AMH

回答

4

如果呼叫活動從片段然後在下方或撥打片段片段然後代碼簡單地替換代碼,而不是startactivity的onclick方法

public class FragmentA extends Fragment implements OnClickListener{ 

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

     View v = inflater.inflate(R.layout.fragment_start, container, false); 

     Button button1 = (Button) v.findViewById(R.id.StartButton); 
     button1.setOnClickListener(this); 
     return v; 
    } 

    @Override 
    public void onClick(View v) { 
     startActivity(new Intent(getActivity(),testing.class)); 
     } 
    } 
} 
+0

這似乎沒有與API 21一起工作。有什麼建議嗎? –

1

聲明並設置fragmentManager作爲最終,聽者定義之前。

​​

你應該可以在偵聽器中使用它。

+0

我試過了,但它給出錯誤方法getFragmentManager()未定義類型TestfragementActivity – AMH

+0

你的android目標是什麼? 'getFragmentManager()'從3.0開始可用。 ::::否則你應該使用'getSupportFragmentManager()' – ilomambo

+0

我用它,但它給出的錯誤方法getSupportFragmentManager()是未定義的類型TestfragementActivity,我的目標2.2 – AMH

1

下面的代碼工作

Button publishButton =(Button)                         
          fragmentView.findViewById(R.id.publishButton); 
    publishButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       publish(); 
      } 
     });