2010-12-30 3 views
0

다른 클래스 내부에서 EditText.getText(). toString()에 액세스하십시오.

public class NewPartnerDialog extends Dialog implements OnClickListener 
public class NewPartnerDialog extends Dialog implements OnClickListener 

그리고 다른 클래스 (activity)에서 호출합니다.

private void showCustomDialog() { 
    NewPartnerDialog customDialog = new NewPartnerDialog(this); 
    customDialog.show(); 
} 

그리고 작동합니다 (보이지만), 약간 문제가 있습니다. 거기에 나는 3 EditText 필드가 있습니다. 어떻게 입력 된 값을 retreieve 다른 클래스 construtor로 전달할 수 있습니다. 여기에 코드가 있습니다.

public class NewPartnerDialog extends Dialog implements OnClickListener { 
public NewPartnerDialog(Context context) { 
    super(context); 
    mainContext = context; 

    setContentView(R.layout.dialog_new_partner); 
    setTitle("Dialog"); 

    finish = (Button) findViewById(R.id.finish); 
    cancel = (Button) findViewById(R.id.finish); 
    finish.setOnClickListener(this); 
    cancel.setOnClickListener(this); 

    name = (EditText) findViewById(R.id.name); 
    address = (EditText) findViewById(R.id.address); 
    city = (EditText) findViewById(R.id.city); 
} 

@Override 
public void onClick(View v) {  
    if (v == finish) { 
     Partner.addNewPartner(mainContext, name.getText().toString(), address.getText().toString(), city.getText().toString()); 
    } else if (v == cancel) { 
     dismiss(); 
    } 
} 

private static EditText name; 
private static EditText address; 
private static EditText city; 
private static Context mainContext; 
private Button finish; 
private Button cancel; 

오류가 여기에 있습니다

if (v == finish) { 
     Partner.addNewPartner(mainContext, name.getText().toString(), address.getText().toString(), city.getText().toString()); 
    } 

NullPointerException 때문에 말합 니다만 어떻게 수정합니까?

+0

'파트너'란 무엇입니까? – Falmarri

+0

일부 도우미 클래스. 모든 것이 중요합니다 (Context, String, String, String). 이 마지막 코드를 "Partner.addNewPartner (mainContext,"ABC ","ABCD ","ABCDE ");로 대체하면" 모든 것이 잘 작동합니다. – svenkapudija

답변

1

시도 최종 이름, 주소, 도시를 만들기 :

private static final EditText name, address, city; 

트릭을 할 것이라고 확신하지만, 당신이 시도 할 수 없습니다.

편집 : finishcancel을 최종 작성해야 할 수도 있습니다.

+0

하지만 내가 마지막으로 만들면 뷰를 할당 할 수 없습니다. "name = (EditText) findViewById (R.id.name);" 그들은 이미 최종적인 (상수)이기 때문입니다. 문제는 onClick 메서드가 생성자에 정의 된 매개 변수가 아닌 빈 매개 변수 (name, address, city)를 사용한다는 것입니다. – svenkapudija

+0

당신은 여전히 ​​생성자에서 그것들을 할당 할 수 있어야합니다; 당신이 그들에게 한 번 할당 할 때까지 그들은 변화에서 잠겨 있지 않습니다. 'static' 수정 자도 필요하지 않을 수도 있습니다. 'private final EditText' 만 시도하십시오. 내가 할 수 있으면 시험 하겠지만 이클립스는 작동하지 않는다. – kcoppock

+0

예, 정적이 없으면 한 번 할당 할 수 있지만 여전히 작동하지 않습니다. 나는 그것을 얻지 못한다. 나는 constuctor와 빈 변수 이름, 주소, 도시를 가진다. 나는 생성자를 호출하고 뷰에 해당 변수를 초기화합니다. 하지만 onClick은 그걸 집어 들고 있지 않습니까? 편집 : 로그에서 그것은 단지 (이 세 변수 중 하나) ... null입니다. – svenkapudija

관련 문제