2012-05-07 5 views
0

로그인 클래스에 사용자 이름이 표시됩니다. 그런 다음 보고서 클래스에서 해당 이름을 검색하려고합니다. 문자열에 올바른 사용자 이름을 입력 할 때 중단 점을 사용했습니다. 그러나 보고서 클래스에서 액세스하려고하면 login 함수가 null 문자열을 반환합니다. 나는 스택 주위를 둘러 보았고 google을 사용했고 내가해야 할 일을 따르고 있다고 확신하지만 작동하지 않습니다.다른 클래스에서 문자열을 가져 오려고 시도합니다.

다음은 로그인 코드입니다. 필요한 경우 더 많은 코드를 표시 할 수 있지만 로그인 할 때 중단 점을 사용하면 dName은 항상 올바른 이름이므로 driversName도 마찬가지입니다. 하지만 report에서 returnName으로 돌아 왔을 때 driversName은 null 문자열입니다. driversName을 내 클래스의 전역 변수가 아니라 로컬 변수로 선언했습니다.

private void getDriversName(String dName) 
{ 
    driversName=dName; 
} 

public String returnName() 
{ 
    return driversName; 

} 

다음은 보고서의 코드입니다. 다시 한번 더 많은 ID를 추가 할 수 있습니다. 또한 로그인을 올바르게 가져 왔습니다. 중단 점을 사용했고 단계를 사용할 때 로그인하는 데 걸렸습니다. 이름이 null로 돌아오고 있습니다.

LogIn login; 
    login=new LogIn(); 
    String name= login.returnName(); 
    driver.setText(name); 

업데이트 : 알아 냈습니다. 정적을 추가해야했습니다.

+0

로그인 화면에서 얻은 사용자 이름은 언제입니까? 실제로 존재하지 않을 수도있는 LogIn의 새로운 인스턴스에서 뭔가를 얻으려는 것처럼 보입니다 (또는 LogIn의 다른 인스턴스에 있음). 아마도 더 많은 코드가 도움이 될 것입니다. –

+0

별도의 활동 (로그인 및 보고서)에 있습니까? – Barak

답변

1

login.returnName();을 호출하기 전에 getDriversName 함수를 호출합니까? 귀하의 코드에서 볼 수 있듯이 driversName은 getDriversName 함수 호출 바로 다음에 값을 가질 것입니다.

기타 로그인 및 기타 작업에 대한 접근 방식을 구현할 수 있습니다. 즉 모든 세션을 관리하는 공통 클래스를 유지할 수 있습니다. 일단 로그인 한 다음 전체 프로젝트의 어느 위치에서 값을 가져올 지 설정할 수 있습니다. Like

Common.getUserName() 
{ 
    return USERNAME; 
} 

로그인 성공 후이 함수를 호출하십시오.

Common.setUserName(String name) 
{ 

this.USERNAME= name; 

} 

희망이 도움이 될 것입니다.

1

LogIn() 개체를 만든 다음 반환 이름을 즉시 확인합니다. 이름이 생성자에서 어떻게 든 설정되지 않으면 항상 기본값을 반환합니다.

+0

새로운 Login()을 주석 처리 할 때 널 포인터 예외가 발생합니다. – Aaron

1

글쎄, login=new LogIn();은 자바가 LogIn 클래스의 새 인스턴스를 만들길 원한다는 것을 의미합니다. 새 인스턴스가 생성 될 때마다 주위에 누락되었을 수있는 오래된 인스턴스에 대한 지식이 없습니다. 아마 당신이하고 싶은 것은 사용자 이름 (예를 들면 아래에있는 것)을 붙잡고 "report"클래스에서 그것을 필요로 할 때 요구할 것입니다. 이 트릭을 할 것처럼 간단

뭔가 :

로그인 클래스에서
public class UserContext { 
    public static String USERNAME; 
    public static void setUsername(String name) { 
     USERNAME = name; 
    } 
} 

, 당신은 UserContext.USERNAME를 사용할 수있는 자격 증명은 다음 보고서 클래스에 다음, 인증 된 사용자 이름 UserContext.setUsername(...) 전화를 확인합니다.

간단하고 맞습니까?

+0

공장 구현에 대해 좀 더 설명 할 수 있습니까? – Aaron

+0

은 기초적인 예를 추가했습니다. –

관련 문제