2012-05-07 11 views
0

ログインクラスでは、ユーザー名を取得します。私のレポートクラスでは、その名前を取得しようとします。私は、文字列が正しいように見えるログイン時にユーザー名を入力するときにブレークポイントを使用しました。しかし、レポートクラスからアクセスしようとすると、loginの関数はnull文字列を返します。私は周りを見回して、Googleを使用して、私は私がやるべきことに従っていると確信していますが、それは動作していません。別のクラスから文字列を取得しようとしています

ここに、ログインのコードがあります。必要に応じてさらにコードを表示することができますが、ログイン時にブレークポイントを使用する場合、dNameは常に正しい名前であり、ドライバ名も同じです。しかし、reportからreturnNameに戻ると、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を呼び出していますか?あなたのコードからは、ドライバ名がgetDriversName関数呼び出しの直後に値を持つことがわかります。

さらに、ログインやその他のタスクに他の方法を実装することができます。つまり、すべてのセッションを維持する共通のクラスを維持できます。ログインした後に値を設定してから、プロジェクト全体に値を設定することができます。同様

Common.getUserName() 
{ 
    return USERNAME; 
} 

この関数はログイン成功後に呼び出します。

Common.setUserName(String name) 
{ 

this.USERNAME= name; 

} 

希望すると、これが役立ちます。

1

新しいLogIn()オブジェクトを作成し、すぐに戻り名をチェックします。何らかの理由でコンストラクタに名前が設定されていない限り、常にデフォルト値が返されます。

+0

新しいLogin()をコメントアウトすると、nullポインタの例外が発生します。 – Aaron

1

まあ、login=new LogIn();は、JavaにLogInクラスの新しいインスタンスを作成させることを意味します。新しいインスタンスが作成されるたびに、それは周りに横たわっていたかもしれない古いインスタンスの知識がありません。おそらくあなたがやりたがっているのは、ユーザー名(例えば、以下のようなもの)を保持し、それが「レポート」クラスで必要なときに尋ねることです。これはトリックを行うだろうと同じくらい簡単

何か:あなたのログインクラスで

public class UserContext { 
    public static String USERNAME; 
    public static void setUsername(String name) { 
     USERNAME = name; 
    } 
} 

、その後、レポートクラスでは、あなたがUserContext.USERNAMEを使用することができ、認証されたユーザ名とUserContext.setUsername(...)を呼び出して資格情報を検証します。

シンプル、右?

+0

工場の導入についてもう少し説明できますか? – Aaron

+0

は初歩的な例を追加しました。 –

関連する問題