android studio按钮不起作用

时间:2017-05-24 06:30:39

标签: java android

这是我第一次发帖提问,我已经在这个网站上尝试了超过5种解决方案,但它们都不适合我,问题是按钮是可点击的,但不会去任何我想要的地方他们来了,但是导致这个页面的主页面登录按钮使用相同的确切代码,下面是菜单代码

   public class AdminMenu extends Activity{

    Button b1, b2, b3, b4, b5;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.admin_menu);

        b1 = (Button)findViewById(R.id.staff);
        b2 = (Button)findViewById(R.id.stock);
        b3 = (Button)findViewById(R.id.incoming);
        b4 = (Button)findViewById(R.id.outgoing);
        b5 = (Button)findViewById(R.id.logout1);

        b1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(getApplicationContext(), "Redirecting...",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(AdminMenu.this, StaffSelection.class);
                startActivity(intent);
                finish();
            }
        });
        b2.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(getApplicationContext(), "Redirecting...",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(AdminMenu.this, StockSelection.class);
                startActivity(intent);
                finish();
            }
        });
        b3.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(getApplicationContext(), "Redirecting...",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(AdminMenu.this, IncomingSelection.class);
                startActivity(intent);
                finish();
            }
        });
        b4.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(getApplicationContext(), "Redirecting...",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(AdminMenu.this, OutgoingSelection.class);
                startActivity(intent);
                finish();
            }
        });
        b5.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(getApplicationContext(), "Logging Out...",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(AdminMenu.this, Login.class);
                startActivity(intent);
                finish();
            }
        });
    }

}

然后这里是app界面的xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="@drawable/background">

    <Button
        android:layout_width="330dp"
        android:layout_height="70dp"
        android:text="STAFF"
        android:id="@+id/staff"
        android:layout_marginTop="23dp"
        android:layout_marginLeft="23dp"
        android:layout_marginStart="23dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:textSize="25dp"
        android:background="#52cc85"
        android:clickable="true"
        android:contextClickable="true" />

    <Button
        android:layout_width="330dp"
        android:layout_height="70dp"
        android:text="STOCK"
        android:id="@+id/stock"
        android:layout_below="@+id/staff"
        android:layout_alignLeft="@+id/staff"
        android:layout_alignStart="@+id/staff"
        android:layout_marginTop="20dp"
        android:layout_alignRight="@+id/staff"
        android:layout_alignEnd="@+id/staff"
        android:textSize="25dp"
        android:background="#52cccc"/>

    <Button
        android:layout_width="330dp"
        android:layout_height="70dp"
        android:text="INCOMING SHIPMENT"
        android:id="@+id/incoming"
        android:layout_below="@+id/stock"
        android:layout_alignLeft="@+id/stock"
        android:layout_alignStart="@+id/stock"
        android:layout_marginTop="20dp"
        android:layout_alignRight="@+id/stock"
        android:layout_alignEnd="@+id/stock"
        android:textSize="25dp"
        android:background="#52cc85"/>

    <Button
        android:layout_width="330dp"
        android:layout_height="70dp"
        android:text="OUTGOING SHIPMENT"
        android:id="@+id/outgoing"
        android:layout_below="@+id/incoming"
        android:layout_alignLeft="@+id/incoming"
        android:layout_alignStart="@+id/incoming"
        android:layout_marginTop="20dp"
        android:layout_alignRight="@+id/incoming"
        android:layout_alignEnd="@+id/incoming"
        android:textSize="25dp"
        android:background="#52cccc"/>

    <Button
        android:layout_width="150dp"
        android:layout_height="70dp"
        android:text="LOGOUT"
        android:id="@+id/logout1"
        android:layout_marginTop="20dp"
        android:layout_below="@+id/outgoing"
        android:layout_alignRight="@+id/outgoing"
        android:layout_alignEnd="@+id/outgoing" />
</RelativeLayout>

这是清单文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.reversesky.mwms">

    <application android:allowBackup="true"
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".User.Login">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".User.AdminMenu">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".User.StaffMenu">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".User.StaffSelection">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".IS.IncomingSelection">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".OS.OutgoingSelection">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".Stock.StockSelection">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".User.CreateStaff">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".IS.CreateIncoming">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".Stock.CreateStock">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
        <activity android:name=".OS.CreateOutgoing">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

    </application>

</manifest>

这是UI 1

5 个答案:

答案 0 :(得分:0)

AdminMenu View StaffSelection view

替换你的代码,

AdminMenu.class

    public class AdminMenu extends Activity {

    Button b1, b2, b3, b4, b5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.admin_menu);

        b1 = (Button) findViewById(R.id.staff);
        b2 = (Button) findViewById(R.id.stock);
        b3 = (Button) findViewById(R.id.incoming);
        b4 = (Button) findViewById(R.id.outgoing);
        b5 = (Button) findViewById(R.id.logout1);

        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Redirecting...", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(AdminMenu.this, StaffSelection.class);
                startActivity(intent);
            }
        });
    }

}

StaffSelection.class

    public class StaffSelection extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }

的AndroidManifest.xml

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".AdminMenu">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>
    <activity
        android:name=".StaffSelection"
        android:label="@string/app_name"
        />
</application>

根据您添加您的课程和其他详细信息。我只为员工按钮点击。

答案 1 :(得分:0)

以下是一些替代解决方案,

  1. ViewAnimator:如果您想快速连续多次更改视图,这对于显示快速动画非常有用。

  2. Fragments:您可以切换片段,而不是重新绘制整个视图。每个片段都是一种迷你活动,总体来说这将更好地包含代码。

  3. Start New Activity:将信息传递给活动以帮助其设置。第一个活动将信息传递给一个共同的第二个活动,该活动知道如何根据从第一个活动收到的信息来设置自己。

答案 2 :(得分:0)

enter image description here 我尝试使用你的代码,它对我来说很好用

答案 3 :(得分:0)

我已经清理了你的解决方案。

整个AndroidManifest.xml

  

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

  <activity android:name=".AdminMenuActivity">
    <intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
  </activity>

  <activity android:name=".CreateIncomingActivity"/>
  <activity android:name=".CreateOutgoingActivity"/>
  <activity android:name=".CreateStaffActivity"/>
  <activity android:name=".CreateStockActivity"/>
  <activity android:name=".IncomingSelectionActivity"/>
  <activity android:name=".LoginActivity"/>
  <activity android:name=".OutgoingSelectionActivity"/>
  <activity android:name=".StaffMenuActivity"/>
  <activity android:name=".StaffSelectionActivity"/>
  <activity android:name=".StockSelectionActivity"/>

</application>

请记住,您应该根据需要调整活动名称。

在我的娱乐活动中,每一项活动(除了AdminMenuActivity以外都证明用法)与以下一样愚蠢:

package com.stackoverflow.tommus.buttonsnotworking;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class CreateIncomingActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_incoming);
    }
}

请记住,您应该在所有活动中使用正确的布局ID。

同样,在我的娱乐中,每一个布局(除了activity_admin_menu以证明用法之外)都是如此愚蠢:

  

现在是重要的一部分。

我的activity_menu_admin与您的相同:

  

<Button
    android:id="@+id/staff"
    android:layout_width="330dp"
    android:layout_height="70dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="23dp"
    android:layout_marginStart="23dp"
    android:layout_marginTop="23dp"
    android:background="#52cc85"
    android:clickable="true"
    android:text="STAFF"
    android:textSize="25dp"
    />

<Button
    android:id="@+id/stock"
    android:layout_width="330dp"
    android:layout_height="70dp"
    android:layout_alignEnd="@+id/staff"
    android:layout_alignLeft="@+id/staff"
    android:layout_alignRight="@+id/staff"
    android:layout_alignStart="@+id/staff"
    android:layout_below="@+id/staff"
    android:layout_marginTop="20dp"
    android:background="#52cccc"
    android:text="STOCK"
    android:textSize="25dp"
    />

<Button
    android:id="@+id/incoming"
    android:layout_width="330dp"
    android:layout_height="70dp"
    android:layout_alignEnd="@+id/stock"
    android:layout_alignLeft="@+id/stock"
    android:layout_alignRight="@+id/stock"
    android:layout_alignStart="@+id/stock"
    android:layout_below="@+id/stock"
    android:layout_marginTop="20dp"
    android:background="#52cc85"
    android:text="INCOMING SHIPMENT"
    android:textSize="25dp"
    />

<Button
    android:id="@+id/outgoing"
    android:layout_width="330dp"
    android:layout_height="70dp"
    android:layout_alignEnd="@+id/incoming"
    android:layout_alignLeft="@+id/incoming"
    android:layout_alignRight="@+id/incoming"
    android:layout_alignStart="@+id/incoming"
    android:layout_below="@+id/incoming"
    android:layout_marginTop="20dp"
    android:background="#52cccc"
    android:text="OUTGOING SHIPMENT"
    android:textSize="25dp"
    />

<Button
    android:id="@+id/logout1"
    android:layout_width="150dp"
    android:layout_height="70dp"
    android:layout_alignEnd="@+id/outgoing"
    android:layout_alignRight="@+id/outgoing"
    android:layout_below="@+id/outgoing"
    android:layout_marginTop="20dp"
    android:text="LOGOUT"
    />

AdminMenuActivity有一些变化:

package com.stackoverflow.tommus.buttonsnotworking;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class AdminMenuActivity extends AppCompatActivity {

    Button b1, b2, b3, b4, b5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_admin_menu);

        b1 = (Button) findViewById(R.id.staff);
        b2 = (Button) findViewById(R.id.stock);
        b3 = (Button) findViewById(R.id.incoming);
        b4 = (Button) findViewById(R.id.outgoing);
        b5 = (Button) findViewById(R.id.logout1);

        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Redirecting...", Toast.LENGTH_SHORT).show();
               navigateToActivity(CreateStaffActivity.class);
            }
        });
        b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Redirecting...", Toast.LENGTH_SHORT).show();
                navigateToActivity(CreateStockActivity.class);
            }
        });
        b3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Redirecting...", Toast.LENGTH_SHORT).show();
                navigateToActivity(CreateIncomingActivity.class);
            }
        });
        b4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Redirecting...", Toast.LENGTH_SHORT).show();
                navigateToActivity(CreateOutgoingActivity.class);
            }
        });
        b5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Logging Out...", Toast.LENGTH_SHORT).show();
                navigateToActivity(LoginActivity.class);
            }
        });
    }

    private void navigateToActivity(Class<?> activityClass) {
        final Intent intent = new Intent(this, activityClass);
        startActivity(intent);
    }
}

我正在使用Intent开启新活动。通过这种方式,我确信在创建新活动时,我的活动具有正确的布局,而不是混乱的ID。

答案 4 :(得分:0)

请你从你的xml文件中的b1按钮中删除“android:contextClickable =”true“行,然后重试。