2017-02-28 72 views
-4

任何想法,为什么此代码无法正常工作?Android Studio onClickListener什么都不做

package com.example.hans.app.Activitys; 

import android.support.v4.app.Fragment; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.support.v7.widget.AppCompatButton; 
import android.widget.Button; 
import android.widget.Toast; 

import com.example.hans.app.R; 


public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

Button homebutton; 

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

    //initalize 
    homebutton = (Button) findViewById(R.id.homebutton); 

    homebutton.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.homebutton: 
      Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show(); 
      break; 
    } 
} 

编辑:activity_main.xml中代码:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
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.hans.app.Activitys.MainActivity" 
tools:background="?attr/colorButtonNormal"> 

<Button 
    android:id="@+id/homebutton" 
    android:background="@drawable/houseempty" 
    android:elevation="0dp" 
    android:visibility="visible" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:layout_marginLeft="20dp" 
    android:layout_marginStart="20dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    style="@style/Widget.AppCompat.Button" /> 

</RelativeLayout> 

我的Android试了一下:单击属性也是如此,我得到一个例外。这里什么都没发生。我慢慢变得疯狂-.-

我不能发布任何异常,因为也不例外^^

+0

尝试Toast.makeText(v.getContext(),“test”,Toast.LENGTH_SHORT).show(); –

+0

你有没有调试'onClick'方法? –

+0

@aksacha是的,但它没有进入此代码 – HansKrywaa

回答

-1

应用此:

@Override 
public void onClick(View v) { 
    switch(v.getId()){ 
     case R.id.homebutton: 
     Toast.makeText(MainActivity.this, "test", Toast.LENGTH_SHORT).show(); 
     break; 
    } 
} 
+0

相同的结果:(只是没有发生 – HansKrywaa

+0

只是删除导入com.example.hans.app.R;作为@ rafsanahmad007说,如果这没有解决问题检查你实际上有R.id.homebutton在activity_main.xml中 – tahsinRupam

+0

如果我删除导入,他标记为“R”红色,并说“无法解析symbole R” – HansKrywaa

0

使用它:

@Override 
public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.homebutton: 
       Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show(); 
       break; 
      } 
    } 

也删除此:

import com.example.hans.app.R; 

页R上的文件自动生成..no需要进口

+0

如果我删除导入,他标记为“R”红色并且表示“不能解析symbole R” – HansKrywaa

+0

clean在android studio中构建项目'build - > clean pro ject'并尝试 – rafsanahmad007

+0

已经做到了,不工作 – HansKrywaa

0

尝试这个

@Override 
public void onClick(View v) { 
    Button btn = (Button)v; 
    switch(btn.getId()){ 
     case R.id.homebutton: 
     Toast.makeText(mContext, "homebutton clicked", Toast.LENGTH_SHORT).show(); 
     break; 
    } 
} 
+0

对我无效 – HansKrywaa

-2
@Override 
public void onClick(View v) { 
    Toast.makeText(MainActivity.this, "test", Toast.LENGTH_SHORT).show(); 
    } 

使用此代码

-1

你可以用它太

homeButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //to do 
     } 
    }); 
-2

尝试下面的线代码它会为你工作,并减少代码行

public class ActivityMain extends Activity implements View.OnClickListener 
    { 
     private class ClickListener implements View.OnClickListener 
     { 
      @Override 

      public void onClick(View view) 
      { 
       switch (view.getId()) 

       { 
        //handle multiple view click events 
       } 
      } 
     } 
    } 
+0

我写了什么“homebutton.setOnClickListener(this);”? – HansKrywaa

+0

请删除此。 –

+0

如果它工作请接受这个答案。谢谢 –

0

试试这个:

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

public class MainActivity extends AppCompatActivity { 

    private Button homebutton; 

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

     homebutton = (Button) findViewById(R.id.homebutton); 

     homebutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getApplicationContext(), "Home Button Clicked", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
} 

这里是xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    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="devesh.com.testapplication.MainActivity"> 


    <Button 
     android:text="Home Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/homebutton" /> 
</RelativeLayout> 
+0

我试过之前 – HansKrywaa

+0

为我工作过,你想让我通过GitHub分享我的代码? –

0

尝试这样的:

package mypackage; 

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    Button homebutton; 

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

     //initalize 
     homebutton = (Button) findViewById(R.id.homebutton); 
     homebutton.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.homebutton: 
       Toast.makeText(getApplicationContext(), "test",  Toast.LENGTH_LONG).show(); 
       break; 
     } 
    } 
} 

和:

<?xml version="1.0" encoding="utf-8"?> 
<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="mypackage.MainActivity"> 

<Button 
    android:id="@+id/homebutton" 
    android:elevation="0dp" 
    android:background="@drawable/image" 
    android:visibility="visible" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:layout_marginLeft="20dp" 
    android:layout_marginStart="20dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    style="@style/Widget.AppCompat.Button" /> 

如果您要复制粘贴,您将编辑软件包名称和图像源。