Android:按钮无响应

时间:2014-11-12 16:41:19

标签: java android

首先关闭我是一个Android开发新手,所以我不是100%肯定我在做什么。我有一个注销按钮,但我已经编码的其他按钮(扫描按钮)不再工作,我确实在我输入注销按钮的代码之前工作了。在log cat中,当我按下扫描按钮时,根本没有出现错误,这显然表明它根本没有被调用,我不确定是否出错了。

import library.UserFunctions;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

public class menuActivity extends Activity implements OnClickListener
{
    private Button scan;
    private TextView contentTxt;
    UserFunctions userFunctions;
    Button btnLogout;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        scan = (Button)findViewById(R.id.btnbarcode);
        contentTxt = (TextView)findViewById(R.id.manText);
        scan.setOnClickListener(this);

        // Check login status in database
        userFunctions = new UserFunctions();
        if(userFunctions.isUserLoggedIn(getApplicationContext()))
        {
            // user already logged in show menu
            setContentView(R.layout.menu);
            btnLogout = (Button)findViewById(R.id.btnLogout);

            btnLogout.setOnClickListener(new View.OnClickListener() 
            { 
                public void onClick(View arg0) 
                {
                    // TODO Auto-generated method stub
                    userFunctions.logoutUser(getApplicationContext());
                    Intent login = new Intent(getApplicationContext(), LoginActivity.class);
                    login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(login);
                    // Closing menu screen
                    finish();
                }
            });

        }else{
            // user is not logged in show login screen
            Intent login = new Intent(getApplicationContext(), LoginActivity.class);
            login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(login);
            // Closing the menu screen
            finish();
        } 
    }

    @Override
    public void onClick(View v) 
    {
        if(v.getId()==R.id.btnbarcode)
        {
            IntentIntegrator scanIntegrator = new IntentIntegrator(this);
            scanIntegrator.initiateScan();
        }   
    }

    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    {
        //retrieve scan result
        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
        if (scanningResult != null) 
        {
            //we have a result
            String scanContent = scanningResult.getContents();

            contentTxt.setText(scanContent);
        }
        else
        {
            Toast toast = Toast.makeText(getApplicationContext(), 
                "No scan data received!", Toast.LENGTH_SHORT);
            toast.show();
        }
    }
}

谢谢民众

2 个答案:

答案 0 :(得分:0)

这是处理按钮点击的简单方法:

假设我有一个活动,这里是活动使用

的布局的xml文件
<RelativeLayout ... >

<Button
    android:id="@+id/btn_login"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:onClick="action_Clicked"
    android:text="Login" />

</RelativeLayout>

注意我是如何使用android:onClick="action_Clicked"

这为按钮提供了一个动作监听器,然后我们可以通过执行以下操作来访问我们的类

    public void action_Clicked(View view){

        switch(view.getId()){

        case R.id.btn_login:
            doStuff();
            break;
        }
    }

你绝对可以在你的课程中添加点击听众,但这是我首选的方法。

答案 1 :(得分:0)

从if if条件中删除setContentView。

然后,将您的菜单布局放在主布局中,让它填满整个屏幕。将其可见性设置为VIEW_GONE。

不要调用setContentView,而是将该菜单的可见性设置为可见。