私はアンドロイドスタジオの断片について学んでいます。ここ は、私はこの単純なコードをwrited Click とAndroidスタジオフラグメントonAttach。 onAttachではどうなりますか?
Click.を読んでてきたものです。フラグメント(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);
}}
は答えてくれてありがとうです!