문제

이 코드를 사용하면 내 프로그램이 강제 종료됩니다(오류).

***public View x = findViewById(R.string.nfoname);***
@Override
public void onCreate(Bundle savedInstanceState) {    
super.onCreate(savedInstanceState);    
setContentView(R.layout.information);
//edittext
***final EditText infoname=(EditText)findViewById(R.id.infoname);***

//clear,confirm
Button clear = (Button)findViewById(R.id.buttonclear);
Button confirm = (Button)findViewById(R.id.buttonconfirm);

//clear button
clear.setOnClickListener(new View.OnClickListener() {       
    public void onClick(View v) {
        // TODO Auto-generated method stub
        infoname.setText("");
    }
});
//confirm button
confirm.setOnClickListener(new View.OnClickListener() {     
    public void onClick(View v) {

        ***x=(View) infoname.getText();***
    }
});
}

가진 것 * 오류의 원인입니다

프로그램 기능:사용자가 확인을 클릭하면 이름이 R.string.nfoname으로 설정됩니다. 그런 다음 TextView x = setText(R.string.nfoname);

도움이 되었습니까?

해결책

텍스트를 R.string에 저장할 수 있는지 잘 모르겠습니다.이것은 컴파일러가 생성하는 생성 된 클래스입니다.APK와 함께 패키지화됩니다.리소스를 번역 수단으로 생각하고 화면에 텍스트를 표시하세요.

사용자 입력을 SharedPreference 또는 데이터베이스에 저장하는 것이 좋습니다.

참조 : SharedPreferences 예제 사용.

다른 팁

적어도 변수 정보 이름 범위 지정의 경우 응용 프로그램에서 오류가 발생할 가능성이 큽니다.infoname은 클래스의 인스턴스 변수가 아닌 onCreate () 함수에 대한 지역 변수이므로 익명 클래스의 일부이기 때문에 onClick () 메서드에서 액세스 할 수 없습니다.

또 다른 질문은 왜 infoname을 최종으로 표시 했는가입니다.onCreate ()가 종료되면 범위를 벗어나므로 변경되면 메서드가 실행되는 동안에 만 존재하므로 변경 한 사람을 확인할 수 있습니다.

값을 R.string.xxx로 설정할 수 없습니다.이 모든 값은 읽기 전용 항목과 매우 비슷하기 때문입니다.편집 텍스트의 값을 다른 레이아웃에 사용하려면 클래스 변수 또는 intent.putextra()를 사용하십시오.

귀하의 소스 코드로 오면 이것을 본다 라코 디스

R.String은 어떻게 뷰를 찾을 수 있습니까?R.id 여야합니다.

최종 EditText infoname= (EditText) findViewById (R.id.infoname); 이 editText가 최종이어야하는 이유는 무엇입니까? 라코 디스

infoname.getText().toString()를 사용하면 Edittext의 현재 텍스트의 문자열 값을 얻을 수 있습니다. 간단하게 할 수 있습니다.

public View x = findViewById(R.string.nfoname);

당신이 View 사용하여 R.string 리소스 ID, 이전에 수행하고 있는 중입니다. setContenView(...) 당신의 onCreate(...) 방법.유효한 것을 사용했더라도 View 다음과 같은 리소스 ID R.id.infoname 그 다음에 x 될거야 null 콘텐츠 뷰가 아직 확장되지 않았기 때문입니다.

final EditText infoname=(EditText)findViewById(R.id.infoname);

무의미한 사용 외에 final 이것이 문제를 일으키지 않는 한 R.id.infoname 실제로는 EditText.

x=(View) infoname.getText();

뿐만 아니라 x BE null 하지만 전화 getText()EditText 반환합니다 Editable 이는 View 으로 캐스팅하는 것도 불가능합니다. View.사용했다고 해도 getText().toString() 이는 텍스트를 가져오는 올바른 방법입니다. EditText 아직 캐스팅이 불가능할 거예요 StringView.

또한 이것에 관해서는...

TextView x = setText(R.string.nfoname);

그럴 텐데...

TextView x = (TextView) findViewById(<some id>);
x.setText(getString(R.string.nfoname));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top