0

いくつかのサンプル コードを使用して、Android アプリのユーザー名とパスワードを使用してログイン画面を作成しようとしました。ただし、次のエラーが発生し"XYZ cannot be resolved or is not a field"ます。

私のプログラムでは、ファイル内XYZ'sの :フィールドと ,tvファイル内の , です。btn_okloginerror.javabtn_sign_intxt_usernametxt_passwordloginactivity.java

これは私のコードですloginerror.java...

    public class LoginError extends Activity {
          Button button;

          public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                System.gc();
                setContentView(R.layout.LoginError);

                TextView textview = (TextView) findViewById(R.id.tv);
                String loginMessage = getIntent().getStringExtra("LoginMessage");
                textview.setText(loginMessage);

                button = (Button) findViewById(R.id.btn_ok);
                button.setOnClickListener(new View.OnClickListener() {
                      public void onClick(View v) {
                            finish();
                      }
                });
          }
    }>

これは私のコードですloginactivity.java...

    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.protocol.HTTP;
    import org.xml.sax.InputSource;
    import org.xml.sax.XMLReader;

    public class LoginActivity extends Activity {
          /** Called when the activity is first created. */
          private static final String TAG = "Login";
          Button signin;
          String loginmessage = null;
          Thread t;
          private SharedPreferences mPreferences; 
          ProgressDialog dialog;

          public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE); 
                if (!checkLoginInfo()) { 
                      signin = (Button) findViewById(R.id.btn_sign_in);
                      signin.setOnClickListener(new OnClickListener() {
                            public void onClick(View v) {
                                  showDialog(0);
                                  t=new Thread() {
                                        public void run() {
                                              tryLogin();
                                        }
                                  };
                            t.start(); 
                            }
                      }); 
                }
                else {
                      /*Directly opens the Welcome page, if the username and password is already available 
                      in the SharedPreferences*/
                      Intent intent=new Intent(getApplicationContext(),Welcome.class);
                      startActivity(intent);
                      finish();
                } 
          }

          protected Dialog onCreateDialog(int id) {
                switch (id) {
                      case 0: {
                            dialog = new ProgressDialog(this);
                            dialog.setMessage("Speek is loading");
                            dialog.setIndeterminate(true);
                            dialog.setCancelable(true);
                            return dialog;
                      } 
                }
                return null;
          }
          private Handler handler = new Handler() {

                public void handleMessage(Message msg) {
                      String loginmsg=(String)msg.obj;
                      if(loginmsg.equals("SUCCESS")) {
                            removeDialog(0);
                            Intent intent=new Intent(getApplicationContext(),Welcome.class);
                            startActivity(intent);
                            finish(); 
                      }
                }
          }; 
          public void tryLogin() {
                Log.v(TAG, "Trying to Login");
                EditText etxt_user = (EditText) findViewById(R.id.txt_username);
                EditText etxt_pass = (EditText) findViewById(R.id.txt_password);
                String username = etxt_user.getText().toString();
                String password = etxt_pass.getText().toString(); 
                DefaultHttpClient client = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://www.speek.com");
                List nvps = new ArrayList();
                nvps.add(new BasicNameValuePair("username", username));
                nvps.add(new BasicNameValuePair("password", password));
                try {
                      UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nvps,
    HTTP.UTF_8);
                      httppost.setEntity(p_entity);
                      HttpResponse response = client.execute(httppost);
                      Log.v(TAG, response.getStatusLine().toString());
                      HttpEntity responseEntity = response.getEntity();
                      Log.v(TAG, "Set response to responseEntity");

                      SAXParserFactory spf = SAXParserFactory.newInstance();
                      SAXParser sp = spf.newSAXParser();
                      XMLReader xr = sp.getXMLReader();
                      LoginHandler myLoginHandler = new LoginHandler();
                      xr.setContentHandler(myLoginHandler);
                      xr.parse(retrieveInputStream(responseEntity));
                      ParsedLoginDataSet parsedLoginDataSet = myLoginHandler.getParsedLoginData(); 
                      if (parsedLoginDataSet.getExtractedString().equals("SUCCESS")) {
                            // Store the username and password in SharedPreferences after the successful login
                            SharedPreferences.Editor editor=mPreferences.edit();
                            editor.putString("UserName", username);
                            editor.putString("PassWord", password);
                            editor.commit();
                            Message myMessage=new Message();
                            myMessage.obj="SUCCESS";
                            handler.sendMessage(myMessage); 
                      } else if(parsedLoginDataSet.getExtractedString().equals("ERROR")) { 
                            Intent intent = new Intent(getApplicationContext(), LoginError.class);
                            intent.putExtra("LoginMessage", parsedLoginDataSet.getMessage());
                            startActivity(intent); 
                            removeDialog(0);
                      } 
                } catch (Exception e) 
                { 
                      Intent intent = new Intent(getApplicationContext(), LoginError.class);
                      intent.putExtra("LoginMessage", "Unable to login");
                      startActivity(intent);
                      removeDialog(0);
                } 
          }
          private InputSource retrieveInputStream(HttpEntity httpEntity) {
                InputSource insrc = null;
                try {
                      insrc = new InputSource(httpEntity.getContent());
                } catch (Exception e) {
                }
                return insrc;
          } 
          //Checking whether the username and password has stored already or not
          private final boolean checkLoginInfo() {
                boolean username_set = mPreferences.contains("UserName");
                boolean password_set = mPreferences.contains("PassWord"); 
                if ( username_set || password_set ) {
                      return true;
                } 
                return false;
          } 
    }

これは私のmain.xml...

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      xmlns:android="http://schemas.android.com/apk/res/android" >

      <Button
            android:id="@+id/btn_sign_in"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="Sign In"
            android:layout_x="103dp"
            android:layout_y="197dp"/> 
      <EditText
            android:id="@+id/txt_username"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:hint="Username"
            android:singleLine="true"
            android:textSize="18sp"
            android:layout_x="40dp"
            android:layout_y="32dp" />
      <EditText
            android:id="@+id/txt_password"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:hint="Password"
            android:singleLine="true"
            android:textSize="18sp"
            android:password="true"
            android:layout_x="40dp"
            android:layout_y="86dp" />
</AbsoluteLayout>

これは私のloginerror.xmlファイルです...

    <?xml version="1.0" encoding="utf-8"?>
    <AbsoluteLayout
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          xmlns:android="http://schemas.android.com/apk/res/android" >
          <TextView 
                android:id="@+id/tv"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" 
                android:gravity="center_vertical|center_horizontal"/>
          <Button android:id="@+id/btn_ok" android:layout_width="80dp"
                android:layout_height="wrap_content" android:text="OK"
                android:layout_x="83dp" android:layout_y="60dp" />
    </AbsoluteLayout>

これらの行でエラーが発生しています...

1.  TextView textview = (TextView) findViewById(R.id.tv);
2.  button = (Button) findViewById(R.id.btn_ok);
3.  signin = (Button) findViewById(R.id.btn_sign_in);
4.  EditText etxt_user = (EditText) findViewById(R.id.txt_username);
    EditText etxt_pass = (EditText) findViewById(R.id.txt_password);

この問題を解決するには、メイン プログラムに何か追加する必要がありますか? 問題の意味は何ですか?

4

2 に答える 2

0

間違った R インポートを使用した可能性があります。android.Rあなたがあなたの問題を発見したよりも使用する場合.

私の理解が正しければ、あなたの LoginError.java ファイルは外部プロジェクトにありますか? その場合、生成された R クラスのものを使用できなくなります。resしたがって、レイアウト ファイルもドローアブルも、フォルダー内には何もありません。

それでも外部プロジェクトを使用したい場合は、Android ライブラリ プロジェクトをご覧ください。そこでレイアウトとドローアブルを使用できるため、これが役立つ場合があります。

于 2012-05-30T14:23:40.610 に答える
0

それほど単純ではないと思いますが、とにかく、レイアウトを追加した後、Eclipse (プロジェクト - クリーン) でプロジェクトを更新しましたか? これは私にかなり頻繁に起こります。また、質問とは関係なくても、AbsoluteLayout は非推奨です。本当に絶対配置が必要な場合は、RelativeLayout とその LayoutParams の絶対値を使用できます。

于 2012-05-30T14:27:37.917 に答える