首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onbackpressed方法错误

onbackpressed方法错误
EN

Stack Overflow用户
提问于 2012-02-14 19:42:40
回答 4查看 2.7K关注 0票数 1

我正在使用身份验证进入页面,在通过身份验证后,只有用户才能进入页面。我为onbackpressed()编写了一段代码,但它不起作用。这里的DatabaseDemo和Login是两个类。当我按back按钮时,显示的是带有用户名和密码的登录类。

DatabaseDemo.java

代码语言:javascript
复制
public class DatabaseDemo extends TabActivity {
    DatabaseHelper dbHelper;
    GridView grid;
    TextView txtTest;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        SetupTabs();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        menu.add(1, 1, 1, "Add Employee");
        return true;
    }
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
        //Add employee
        case 1:
            Intent addIntent=new Intent(this,AddEmployee.class);
            startActivity(addIntent);
            break;
        }
        super.onOptionsItemSelected(item);
        return false;
    }
    void SetupTabs()
    {
        TabHost host=getTabHost();
        TabHost.TabSpec spec=host.newTabSpec("tag1");
        Intent in1=new Intent(this, AddEmployee.class);
        spec.setIndicator("Add Employee");
        spec.setContent(in1);

        TabHost.TabSpec spec2=host.newTabSpec("tag2");
        Intent in2=new Intent(this, GridList.class);

        spec2.setIndicator("Employees");
        spec2.setContent(in2);

        host.addTab(spec);
        host.addTab(spec2);
    }
    @Override
    public void onBackPressed() 
    {
        Intent i = new Intent(DatabaseDemo.this, Login.class);
        startActivity(i);
    }
}

我有更多的课程,对于其他意图来说,它工作得很好。

Login.java

代码语言:javascript
复制
public class Login extends Activity implements OnClickListener{
    Button btn;
    EditText et1, et2;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        btn = (Button)findViewById(R.id.btnlogin);
        btn.setOnClickListener(this);
        et1 = (EditText)findViewById(R.id.Leditename);
        et2 = (EditText)findViewById(R.id.Leditpw);

    }
    @Override
    public void onBackPressed() 
    {
        super.onBackPressed();
        finish();
    }
    @Override
    public void onClick(View v) {
        String ename = et1.getText().toString().trim();
        System.out.println("ename is..." +ename);
        String epw = et2.getText().toString().trim();
        System.out.println("Password is..." +epw);

        if(ename.equals("srikanth") && epw.equals("12345")){
            Toast.makeText(getApplicationContext(), "valid login..!", Toast.LENGTH_LONG).show();
            Intent in = new Intent(getApplicationContext(), DatabaseDemo.class);
            startActivity(in);      
        }
        else
        {
            Toast.makeText(getApplicationContext(), "Invalid authentication..!", Toast.LENGTH_LONG).show();
            Intent intent = new Intent(getApplicationContext(), Login.class);
            startActivity(intent);
        }
    }

Logcat未显示任何错误。

代码语言:javascript
复制
02-14 17:45:33.595: I/ActivityManager(59): Starting activity: Intent { cmp=com.android.databaseex/.DatabaseDemo }
02-14 17:45:34.835: I/ActivityManager(59): Displayed activity com.android.databaseex/.DatabaseDemo: 1141 ms (total 1141 ms)
02-14 17:45:50.145: I/System.out(613): ename is...srikanth
02-14 17:45:50.145: I/System.out(613): Password is...12345
02-14 17:45:50.175: I/ActivityManager(59): Starting activity: Intent { cmp=com.android.databaseex/.DatabaseDemo }
02-14 17:45:51.055: I/ActivityManager(59): Displayed activity com.android.databaseex/.DatabaseDemo: 819 ms (total 819 ms)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-14 19:45:10

您需要跳过super.onBackPressed();行:

代码语言:javascript
复制
@Override
    public void onBackPressed() 
    {
        Intent i = new Intent(DatabaseDemo.this, Login.class);
        startActivity(i);
    }
票数 1
EN

Stack Overflow用户

发布于 2012-02-14 22:52:56

使用onkeydown()代替onBackpressed方法

代码语言:javascript
复制
public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub

        if(keyCode == KeyEvent.KEYCODE_BACK){

            Intent i = new Intent(DatabaseDemo.this, Login.class);
        startActivity(i);
        }
        return super.onKeyDown(keyCode, event);
    }
票数 1
EN

Stack Overflow用户

发布于 2012-02-14 19:58:34

代码语言:javascript
复制
@Override
public void onBackPressed() 
{
    Intent i = new Intent(DatabaseDemo.this, Login.class);
    startActivity(i);
}

这是完美的工作,请先检查您的androidmanifest文件,是否有活动登录条目?如果有,则没有任何问题,否则使活动登录到清单文件中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9276230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档