2014-03-13 30 views
0

我有问题得到onClick的编码才能正常工作我有一个主要的活动,其中包含8个按钮按钮1应该打开面书到页面2,4,5,6和7应该打开网页浏览器到定义的页面,按钮8打开具有预设号码的电话拨号器来呼叫。我无法得到这个工作与崩溃的应用程序,我可以设置一个onclick监听器按钮1,并得到它的工作,但是当我添加下一个它崩溃的应用程序我得到没有错误在日食我被告知要做到这一点一个片段来处理onclicks,但我失去了如何做到这一点,任何人都可以帮助我编码?onClick监听器无法正常工作没有得到任何错误

这是我到目前为止只是2个按钮仍然没有得到一个打开脸书或打开电话拨号的人,但这是我得到然后它崩溃 - 杰里33分钟前

import android.net.Uri; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends Activity { 

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

    public void addButtonClickListner() { 
     Button btnNavigator = (Button)findViewById(R.id.imageButton2);     
     btnNavigator.setOnClickListener(new OnClickListener(){ 
      public void onClick(View arg) { 
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("www.*****.com")); 
        startActivity(intent); 
      } 
     }); 
    } 
+6

记住你的代码,我确信这里有人可以很容易地帮助你。 – zgc7009

+0

这是我到目前为止只有2个按钮仍然没有得到一个打开脸书或打开电话拨号的人,但这是我得到然后它崩溃 – Jerry

+0

import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { – Jerry

回答

0

做到这一点,而不是

....

package com.example.testcode; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
// Test code: import android.widget.TextView; 

// Let your class implement the OnClickListener interface directly. This 
// will let you use the onClickListener 
class MainActivity extends Activity implements OnClickListener{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) {   
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // "find" our views by their id's in our activity's layout 
     Button button1 = (Button) findViewById(R.id.button1); 
     Button button2 = (Button) findViewById(R.id.button2); 
     //...... continue for button3 - button8 

     // set our "click" listeners for each of our buttons 
     button1.setOnClickListener(this); 
     button2.setOnClickListener(this); 
     //...... continue for button3 - button 8 
    } 

    // Because our class implements the OnClickListener interface 
    // it will be listening for "clicks". Because of this, we can 
    // override the click listener's default onClick(View v) method. 
    // View v is our view, or our button, that is "clicked". 
    @Override 
    public void onClick(View v) { 
     // Test code: TextView text = (TextView) findViewById(R.id.text); 

     // This is the statement that will allow each of your buttons 
     // to perform different processes. For my test code, I have each 
     // button reset the TextView I have displayed in the top of my 
     // layout. 
     switch(v.getId()){ 
     case R.id.button1: 
      // Test code: text.setText("Button 1"); 
      break; 
     case R.id.button2: 
      // Test code: text.setText("Button 2"); 
      break; 
     //...... continue for button3 - button 8 
     default: 
      Log.d(getApplication().getPackageName(), "Button click error!"); 
      break; 
     } 
    } 
} 

请看看我的意见。被评论为

的部分
// Test Code: 

是对您所做的事情来说几乎没用的代码。 switch语句中的测试代码是您需要用每个单独的按钮替换您想要执行的操作的代码。同样重要的是要注意,在我说“// ......继续按钮3 - 按钮8”的情况下,我只是想重复我用其余六个按钮开始的前两个按钮的模式。

如果你想和我给定的测试代码来测试它,这是我的布局(只需确保您清除“//测试代码:”让测试代码行不再注释掉:

<LinearLayout 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:orientation="vertical" 
    tools:context=".MainActivity" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Press a button" 
     android:id="@+id/text" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button 1" 
     android:id="@+id/button1" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button 2" 
     android:id="@+id/button2" /> 

</LinearLayout> 

注:

了解,在“好”的XML布局中,这是非常重要的“机器人:文本=”部分将被设置为“机器人:文本= @字符串/‘string_id’”,而不是一些普通的字符串以帮助本地化。

确保您更改了dec这个包的名字可以在“Application”/ src /“package_name”找到,通常类似于com.example.applicationname

我也想说我在代码中包含了注释,以便在任何人想要使用代码作为指导时不必重复访问此链接,而不是因为我想要在答案中发布大量代码。

+0

只是按照这种方法......这是最好的,更容易理解......并请注意他正在实施的课程...... – 1baga

+0

谢谢你非常我今天会给这个镜头和完成评论时 – Jerry

+0

当然,如果它的工作,随时upvote和接受...我喜欢的点:P – zgc7009

相关问题