我将按钮添加到我的第一个Wear OS应用程序中。当我遵循一个模型我现有的Android应用程序,由于“ WearableActivity”与“ Activity”。我无法定义OnClickListener。
在我创建时是这样:
bottomButton = findViewById(R.id.bottomButton);
setListener();
后来的主要活动来源是这个
void setListener()
{
bottomButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) // toggle between report and graph display
{ if (showGraph)
{showReport=true; showGraph=false;bottomButton.setText("show Report");}
else
{showReport=false;showGraph=true;bottomButton.setText("show Graph");}
} // end, onClick
}); // end, setOnClickListener
} // end, setListener()
在两种情况下,按钮都是以XML定义的,并按以下方式找到和使用
OkButton = (Button) findViewById(R.id.OkButton);
OkButton.setOnClickListener(this);
仍然可以编译。而且我可以访问按钮中的项目,例如文本。但是,当我更改文本时,它不会出现在屏幕上。当我按下模拟器中的按钮时,它不会注册任何动作。
问题不是来自您的代码,而是来自Android Wear模拟器。您的磨损模拟器处于环境(低功耗)模式。单击仿真器窗口顶部的,以在交互式(全功率)和环境模式(低功率)之间切换。
如何在Wear os应用程序中定义和使用按钮。
与在移动端完成操作的方式相同。下面是一个示例
public class MainActivity extends WearableActivity implements View.OnClickListener {
Button clickMeButton;
TextView textView;
int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setAmbientEnabled();
clickMeButton = findViewById(R.id.click_me_button);
textView = findViewById(R.id.test_textview);
clickMeButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
count++;
textView.setText("I am clicked: "+count);
}
@Override
public void onEnterAmbient(Bundle ambientDetails) {
// Handle entering ambient mode
super.onEnterAmbient(ambientDetails);
Log.e("Hello", "I'm ambient");
}
@Override
public void onExitAmbient() {
// Handle exiting ambient mode
super.onExitAmbient();
Log.e("Hello", "exit ambient");
}
@Override
public void onUpdateAmbient() {
// Update the content
super.onUpdateAmbient();
Log.e("Hello", "update ambient: " + isAmbient());
}
}
以下是上述活动的结果(注意:在仿真器窗口顶部单击以在交互模式和环境模式之间切换:]
编辑
为了避免在活动中实现View.OnClickListener,您可以像为setOnClickListener
所做的那样在为OkButton
调用bottomButton
时传递View.OnClickListener的实例。
OkButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//do something when OkButton is clicked
}
});