2017-07-28 55 views
1

我創建了一個Fragment並將其命名爲Kabar,我可以看到ButtonTextView按預期出現。我在哪裏可以將FindViewById()和偵聽器添加到片段中?

這裏是我的Fragment

public class Kabar extends Fragment { 
    private Button button; 
    private TextView text; 

    public Kabar() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View v= inflater.inflate(R.layout.fragment_kabar , container, false); 
     return v; 
    } 
} 

這是我fragment_kabar佈局:

<FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.examplee.my.Kabar"> 

    <!-- TODO: Update blank fragment layout --> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <TextView 
      android:id="@+id/tt1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="mohsen kabar" /> 

     <Button 
      android:id="@+id/tt2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="113dp" 
      android:text="Button" 
      android:layout_below="@+id/mohsenkabar" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentEnd="true" 
      android:layout_marginRight="93dp" 
      android:layout_marginEnd="93dp" /> 
    </RelativeLayout> 

我需要使用ButtonTextView

我在哪裏可以放置此代碼?

text=(TextView) text.findViewById(R.id.tt1); 
button=(Button) button.findViewById(R.id.tt2); 
button.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     tt1.setText("kkk mmm bbb ddd"); 
    } 
}); 

回答

1

嘗試這種添加此代碼在您的kabar片段

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View v= inflater.inflate(R.layout.fragment_kabar , container, false); 

     TextView text=(TextView) v.findViewById(R.id.tt1); 
     TextView button=(TextView) v.findViewById(R.id.tt2); 

     button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     text.setText("kkk mmm bbb ddd"); 
     } 
    }); 
    return v; 
} 
2

有兩個選項onCreateViewonViewCreated(首選)方法。

void onViewCreated (View view, Bundle savedInstanceState)

onCreateView後立即調用(LayoutInflater,ViewGroup中, 包)又回來了,但是任何保存的狀態已 已恢復到視圖之前。一旦他們知道他們的視圖層次被完全創建,這給子類有機會初始化自己 。但是, 片段的視圖層次結構不會附加到其父級 這一點。

+0

雖然此鏈接可能回答此問題,但最好在此處包含答案的重要部分並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/16860151) – MikeT

+0

感謝您的信息。 – santalu

1

onCreateView

text =(TextView) v.findViewById(R.id.tt1); 
button=(Button) v.findViewById(R.id.tt2); 
button.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     text.setText("kkk mmmm bbbb ddd"); 
    } 
}); 
1

如下因素替換你的代碼使這一變化在你的代碼

text=(TextView) v.findViewById(R.id.tt1); 
button=(Button) v.findViewById(R.id.tt2); 
button.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     text.setText("kkk 'mmm' 'bbb' 'ddd'"); 
    } 
}); 
+0

如果您的查詢回答了,請正確地將其標記爲正確答案 –

1

你應該在OnCreateView添加您的代碼在你的KABAR Fragment

public class Kabar extends Fragment { 

    private Button button; 
    private TextView text; 

    public Kabar() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View v = inflater.inflate(R.layout.fragment_kabar , container, false); 

     TextView text = (TextView) v.findViewById(R.id.tt1); 
     Button button = (Button) v.findViewById(R.id.tt2); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       text.setText("kkk mmm bbb ddd"); 
      } 
     }); 
     return v; 
    } 
} 
相關問題