简单的android问题

时间:2012-09-27 21:09:21

标签: android

所以我一直在寻找Android教程,帮助问题等等。我一直在努力学习问题或教程。

这是我的问题:

  1. 当我在可视化设计器中创建项目时,将在.xml中创建一段代码。 如何在以后的.java文件中获取该项目的ID?

  2. 如果点击一个按钮,如何添加回调?


  3. 这是我到目前为止所拥有的:

    的.java

    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.Button;
    
    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    
        public void Button_click_callback() // Where to add the callback in the .xml?
        {
            // How to get button ID and change the text of it? 
                //Knowing this will help me A LOT!
        }
    }
    

    .XML

    <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="79dp"
    android:layout_marginTop="32dp"
    android:text="Button" />
    

9 个答案:

答案 0 :(得分:4)

  

当我在可视化设计器中创建一个项目时,将在.xml中创建一段代码。如何在以后的.java文件中获取该项目的ID?

步骤1:确保您已在设计器中为窗口小部件分配了一个ID(在上面的XML中,您会将其视为android:id="@+id/button1

步骤2:在Java中,您可以在某个适当的时间(例如,来自findViewById(R.id.button1),在您致电{{1}后的某个时间)调用Activity来获取该窗口小部件的Java对象})。

  

当我们说点击一个按钮时,如何添加回调?

通常,有一种setter方法,例如setContentView(),您可以在setOnClickListener()检索到的Button上调用。

在活动托管的小部件上点击事件的特定情况下,您还可以在XML中使用findViewById()属性,该属性提供android:onClick上将获得的方法的名称单击小部件时调用,而不是必须使用setter。

答案 1 :(得分:2)

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

    Button button1 = (Button)findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Do something in response to button click
        }
    });
}

所有这些都在Android开发者网站上进行了详细记录。你应该为他们寻找这些基本的东西。

http://developer.android.com/guide/topics/ui/controls/button.html

答案 2 :(得分:1)

  1. 您可以使用findViewById在Java中从XML获取视图ID,确保您应该在视图中声明ID,否则可能会导致应用程序强制关闭的异常
  2. 如果您想要使用xml而不是以编程方式回调 你可以在布局XML中的Views上声明android:onClick属性
  3. 例如,在你的情况下你需要添加android:onClick =&#34; Button_click_callback&#34;在你的

    <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="79dp"
    android:layout_marginTop="32dp"
    android:text="Button" 
    android:onClick="Button_click_callback"/>
    

    然后你可以使用Button_click_callback方法在你的Activity中回调

    public void Button_click_callback()
    {
    }
    

    如果你想以编程方式回调java, 首先,您使用findViewById获取视图,然后可以将click侦听器添加到该视图

答案 3 :(得分:0)

您需要使用onClickListener并覆盖onClick方法。

btn.setOnClickListener.(new View.OnClickListener(){

     @Override
      public void onClick(View v) {
        //TO DO
    }

});

OnClickListener是一个接口。这就是为什么你需要覆盖OnClick方法。

答案 4 :(得分:0)

//in oncreate method of activity 

//take button id like that
Button button1 = (Button)findViewById(R.id.button1);

//then implement on click listener for  performing action on button

button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Do something in response to button click
    }
});
}

//you can also implements onclicklistener in activity.its interface; 

public class MainActivity extends Activity implements View.OnClickListener

//then generate method 
public void onClick(View view) {


}

答案 5 :(得分:0)

public class MainActivity extends Activity {
    private Button button1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button1 = findViewById(R.id.button1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void Button_click_callback() {
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Do something in response to button click
                Log.e("click", "-------------button click");
            }

        });
    }
}

答案 6 :(得分:0)

这两个代码段是相等的,只是以两种不同的方式实现。

代码实现

Button btn = (Button) findViewById(R.id.mybutton);

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        myFancyMethod(v);
    }
});

// some more code

public void myFancyMethod(View v) {
    // does something very interesting
}

上面是OnClickListener的代码实现。这就是XML实现。

XML实现

<?xml version="1.0" encoding="utf-8"?>
<!-- layout elements -->
<Button android:id="@+id/mybutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click me!"
    android:onClick="myFancyMethod" />

答案 7 :(得分:0)

1)首先查看您的XML文件,在代码中显示     android:id =“ @ + id / button1。

您可以使用自己的名称对其进行编辑。尽管GUI出现在设计的右侧,您也可以进行同样的更改。

您可以使用 findViewById(R.id.your id name); 函数获取ID。

例如:    我的按钮ID是 btn1 。在我的代码中,我可以通过获取按钮的ID来使用该按钮,如下所示:

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

2)您可以在创建完之前创建的Button之后进行回调,如下所示;

btn1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Create your code
    }
});
}

答案 8 :(得分:-1)

对于回叫 - Android组件需要在呼叫设备中注册。组件的id必须在xmls中是唯一的。 使用唯一ID可以动态更改组件,也可以使用回调。