【问题标题】:Button1 and then Button2 when click it will generate one "letter or character" - AndroidButton1 然后 Button2 单击它会生成一个“字母或字符” - Android
【发布时间】:2016-12-31 14:49:48
【问题描述】:

如果标题仍然有点令人困惑,我真正的意思是“当我单击按钮 1 后跟按钮 2(有一点时间间隔)时,它会根据你的值生成一个“字母”或“字符”对其进行编码,它将在文本框中输入。

请帮助我完成我的 android 应用程序。我很难处理这个问题。

我的代码:

<Button
android:id="@+id/block1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A"
android:textSize="16sp" />

在我的 onCreate() 中

Button A = (Button) findViewById(R.id.block1);
Button B = (Button) findViewById(R.id.block2);

然后设置OnClickListener

A.setOnClickListener(this);
B.setOnClickListener(this);

在我的 onClick() 方法中,我确实声明了一个全局变量。 String letter;

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.block1:
             letter += "A";  
             tts.speak("A.", TextToSpeech.QUEUE_FLUSH, null);
             break;
        case R.id.block2:
            letter += "B";  
             tts.speak("B.", TextToSpeech.QUEUE_FLUSH, null);
             break;
        .
        .
        just like that..

请告诉我我缺少什么或需要修改什么。如果我错了,请纠正我。这已经是一个工作程序,但正如我之前所说,我想要一个**“一次又一次”,那么它将生成一个“变量/字符”在文本框中。

已编辑:

【问题讨论】:

  • 感谢您的尝试,但您目前面临的问题是什么?您需要具体说明问题
  • @PavneetSingh 你好,美好的一天,我添加了一张图片:) 只是我不知道如何实现一个“例如:当你点击第一个块(buttonA)然后点击第二个块(buttonB)它将生成一个“文本框上的值”一个接一个先生。
  • 您需要使用findViewById 初始化您的textview 并在点击监听器中使用textview.setText(letter);
  • 我已经知道了。 :) 唯一剩下的是按钮组合。 Block1+Block2(一个接一个,每次点击都有一个时间间隔)它会生成一个“字符或变量”。你能帮我解决这个问题吗? :(
  • 您是想始终在点击两个按钮之后触发“动作”还是在可能更长的组合之后触发?

标签: java android arrays switch-statement


【解决方案1】:

我会根据我对您所问的内容的理解写一个简单的答案...

我建议你添加一个变量,

boolean aPressed = false;

然后在 A 的单击监听器中将变量更改为 true,启动一个计时器,然后在 B 按钮的单击监听器中使用 if 语句测试是否从变量 aPressed 中单击了 A。然后停止计时器,看看所花费的时间是否符合您的要求,并根据需要将文本放入文本框中。

我不会详细说明,因为不清楚你在问什么,我很惊讶这还没有结束。

希望我能帮上忙,

-丹尼尔

【讨论】:

  • 你好,我真正的意思是“它会在两个按钮被点击后触发一个动作”
  • 中间或一起有句号?
  • 我不明白你的意思,但是例如:当你点击 buttonA 然后 buttonB 它将触发一个动作。 (取决于您输入的代码是什么)
【解决方案2】:

以下是简单的逻辑,不是可以工作的确切代码。

// Replace "String" with the correct type to suit the task
private String mButOneValue = "";

private void twoClickAction(String valueOne, String valueTwo) {
    ... perform the action here using the passed fields ...    
}

// This would be your current switch statement maybe. This 
// prevents a long method with possible code duplication.
private String getValueOfClick(View v) {
    ... extract the "value" you want to track ...
    return theValueYouWorkedOut;
}

@Override
public void onClick(View v) {
    if (mButOneValue.equals("")) {
        // capture the first value you want to track.
        mButOneValue = getValueOfClick(v);

    } else {
         // first click value is known, get the second and
         // and perform the action you want.
         twoClickAction(mButOneValue, getValueOfClick(v));

         // And be sure to clear the value first value.
         mButOneValue = "";
    }
}

【讨论】:

  • 你好,因为我必须从“A-Z”生成一个字母所以我认为你的方法行不通..youtu.be/wQE870a_S3k?t=1m35s这就是我的目标..
  • 在检查了您想要制作的内容之后,我认为 6 个按钮(即 1、2、4、8、16、32 的值)的按位 / 标志系统会更好。例如; 1 = A, (1+4) = B, (1+2) = C ... 等等。唯一的问题是你如何“注册”那个字母组合是完整的还是有效的?无论哪种方式,我建议您删除此问题并制作一个更清晰的新问题,并包含有关您真正想做的事情(以及您尝试过的事情)的更多详细信息,因为您当前的问题不符合您的目标。例如,单击 2 次按钮然后执行操作,但有时是 1 (A),有时是 5 (Q)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多