2014-09-17 3 views
0

좋아요.이 질문은 어딘가에서 대답해야한다고 생각합니다.하지만 찾은 모든 대답으로는 내 문제를 해결할 수 없습니다.액티비티의 조각 안에있는 버튼을 찾으십시오.

이클립스 메뉴에서 새로운 안드로이드 Activity을 만들고 Fragment xml 레이아웃을 사용하는 새로운 활동을 추가했습니다. XML에서이 일 EditTextButton하고 버튼을 클릭 할 때 나는 글고에서 String와 somoething 싶지 : 나는 onCreate()의 코드를 배치하면

Button b = (Button)findViewById(R.id.syncButton)); 
    b.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      EditText e = (EditText)(findViewById(R.id.syncCode)); 
      Log.d("You entered", e.getText().toString()); 
     } 
    }); 

, 내가보기 때문에 NullpointerException를 얻을 수 아직 생성되지 않았습니다. onActivityCreated 메서드를 사용하여 솔루션을 보았지만 Activity 클래스의 개체를 사용하고 있으므로 이러한 메서드가 없습니다. 라이프 사이클에서보기를 부 풀린 코드를 넣는 것이 좋습니다.

+0

getView()가 실행되지 않습니다. findViewById가 작동합니까? – Nabin

+0

또는 내부 ** onCreateView **이 뷰를 사용하십시오 view = inflater.inflate (R.layout.details, container, false); 돌아 가기보기; 그리고 view.findViewById를 사용 하시겠습니까? – Nabin

+0

그래서 혼란 스러울 때까지 기다리십시오. 단편이나 활동에서 단편에서 문자열을 가져 오려고합니까? – tyczj

답변

0

당신의 조각이 넣어 : 나는 포함하는 활동에서 이벤트에 응답 믿고

private Button mButton; 
private EditText mEditText; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    final View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
    mButton = (Button) findViewById(R.id.sync_button)); 
    mEditText = (EditText) findViewById(R.id.sync_code); 
    mButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d(TAG, "You entered: " + mEditText.getText()); 
     } 
    }); 
    return rootView; 
} 
0

을 조각의 재이용을 감소, 당신은 원자와 같은 조각해야 가능하면 당신이 할 수 있도록, 가능한 한 자기 - 포함 몇 가지 활동에서 사용하십시오.

어쨌든 onCreateView 이벤트를 사용하십시오. 이런 식으로 뭔가가 :

rootView = inflater.inflate(R.layout.fragment_sms, container, false); 

txtBody = (TextView) rootView.findViewById(R.id.txtContrl); 

은 또한 당신은 그 아이를 액세스하기 전에 확신이 활동에 추가하려면 조각의 .isAdded 방법을 사용할 수 있습니다. 그러나 가능하다면 조각 내 논리를 캡슐화하십시오.

관련 문제