我一直在學習android工作室的片段。 這是我一直在閱讀 Click 和Click.Android studio Fragment onAttach。 onAttach會發生什麼?
我所著這個簡單的代碼。當您單擊片段中的按鈕(frag.xml)時,將顯示文本(activity_main.xml)。代碼工作正常,但我不明白在onAttach發生了什麼。有人可以用簡單的方式解釋這個關於代碼的問題嗎?我得到trycatch和sout消息,但否則我會迷路。
@Override
public void onAttach(Context context) {
super.onAttach(context);
try{
st =(setText) context;
}catch (Exception e){
System.out.println("Virhe " + e);
}
}
這裏是代碼的其餘部分
import android.content.Context;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class interExample extends Fragment {
setText st;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag,container,false);
Button bt =(Button) view.findViewById(R.id.button);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
st.text("fragone pressed");
}
});
return view;
}
public interface setText{
void text(String text);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try{
st =(setText) context;
}catch (Exception e){
System.out.println("Virhe " + e);
}
}
這裏是MainActivity
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.widget.TextView;
public class MainActivity extends FragmentActivity implements interExample.setText{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragment f1 = new interExample();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.line1,f1);
ft.commit();
}
@Override
public void text(String t){
TextView tv = (TextView) findViewById(R.id.textview);
tv.setText(t);
}}
感謝您的答案!