数字登录应用程序不切换活动?

时间:2014-07-01 13:13:11

标签: android login

您好我有一个使用硬编码凭据登录的基本应用程序,我希望它能带您进入另一个名为Welcome的活动。这是我的主要活动:

package com.example.numericlogin;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.os.Build;

public class MainActivity extends Activity{

    private EditText login_key=null;
    private Button login=null;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        login_key = (EditText)findViewById(R.id.editText1);
        login = (Button)findViewById(R.id.login);
    }

    public void login(View view){
        if(login_key.getText().toString().equals("123456")){
            Toast.makeText(getApplicationContext(), "Login Successful!", 
            Toast.LENGTH_LONG).show();
            startActivity(new Intent(MainActivity.this,Welcome.class)); 
       }
    else{
      Toast.makeText(getApplicationContext(), "Wrong Credentials",
      Toast.LENGTH_SHORT).show();
      {
         login.setEnabled(false);
      }

   }

}
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }

}

这是主要活动的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.numericlogin.MainActivity$PlaceholderFragment" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_key" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/textView1"
        android:ems="10"
        android:digits="0123456789"
        android:inputType="number|textPassword"
        android:maxLength="6"
        android:password="true"
        />

    <Button
        android:id="@+id/login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="70dp"
        android:text="@string/login" />

</RelativeLayout>

以下是我希望它在正确登录时切换到的第二个活动:

package com.example.numericlogin;

import android.view.View;
import android.widget.ImageView;


public class Welcome {

    public void welcome(View v){
        ImageView picture = (ImageView)
        setContenView(R.layout.fragment_main);

    }

    private ImageView setContenView(int fragmentMain) {
        // TODO Auto-generated method stub
        return null;
    }

}

以下是上述活动的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="74dp"
        android:src="@drawable/welcome" />

</RelativeLayout>

以下是清单:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.numericlogin"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.numericlogin.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
      <activity android:name=".Welcome"/>
   </application>
</manifest>

当我启动它时,它会调出第一个活动并允许您在登录区域输入输入,但是当您单击登录按钮时没有任何反应。代码中没有错误,这里是logcat输出:

07-01 14:11:15.313: W/IInputConnectionWrapper(23128): showStatusIcon on inactive InputConnection

2 个答案:

答案 0 :(得分:0)

这是您在活动之间切换的方式:

在MainActivity.java中:

Intent go = new Intent(this, Welcome.class);
startActivity(go);

您的第二个活动类必须扩展活动

public class Welcome extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.childact);
    }
}

您必须在清单文件中注册所有活动。

你错过了这个:

<activity
    android:name="com.example.testingproj.Welcome"
    android:label="@string/app_name">
</activity>

答案 1 :(得分:0)

我想你忘了为登录按钮设置onClickListener,或者设置属性onClick with value&#39; login&#39;在图形布局预览中的属性面板中。

    final Button login= (Button) findViewById(R.id.login);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform code validation

        }
    });