【问题标题】:Android: Click on back button twice?Android:点击后退按钮两次?
【发布时间】:2015-02-06 05:56:02
【问题描述】:

我是安卓初学者。

我的情景

我有一个有 2 个按钮的屏幕 A 按钮 A 按钮 B。

当我打开我的应用程序屏幕 A 时会打开上面的 2 个按钮,当我单击按钮 B 时会显示一个文本视图并显示 Edittext。

我想要什么?

当按下返回按钮时,textview 和 edittext 应该隐藏,当我再次按下返回时,我应该退出屏幕 A。

到目前为止我尝试了什么?

下面的代码是否符合我的要求?

主要活动.xml

import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

    TextView title;
    EditText userinput;
    Button buttonA,buttonB;

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

    private void initialize() {
        userinput = (EditText)findViewById(R.id.userinput);
        title = (TextView)findViewById(R.id.title);
        buttonA = (Button)findViewById(R.id.buttonA);
        buttonB = (Button)findViewById(R.id.buttonB);
        buttonA.setOnClickListener(this);
        buttonB.setOnClickListener(this);
    }



@Override
public void onBackPressed() {
  title.setVisibility(View.INVISIBLE);
 userinput.setVisibility(View.INVISIBLE); 


    }

    @Override
    public void onClick(View v) {

        switch(v.getId())
        {

        case R.id.buttonA:
            break;

        case R.id.buttonB:

            title.setVisibility(View.VISIBLE);
            userinput.setVisibility(View.VISIBLE);
            break;
        }


    }


}

我提到了thisthis 链接但不明白。如果有人可以帮助我实现我想要的1

【问题讨论】:

  • 如果您需要我的 xml 代码,请告诉我
  • 你不能只添加一个布尔值吗?字段隐藏=假;当您隐藏字段时,请在 onBackPressed 中设置为 true if(fieldshidden){bla bla}
  • @Bart Hofma :- 是的,你的解决方案是解决这个问题的最简单方法
  • @OP:如果您使用 [Fragments](developer.android.com/guide/components/fragments.html),那么您可以将 titleuserinput 添加到 Fragment。当您使该片段可见时,将该事务添加到 backstack,您尝试实现的目标将像魔术一样工作!

标签: android back


【解决方案1】:

这样做。

@Override
 public void onBackPressed() {
if(title.getVisibility()==View.VISIBLE)
 {
  title.setVisibility(View.INVISIBLE);
  userinput.setVisibility(View.INVISIBLE); 
 }
  else
  {
   finish();
  }
}

它会做你想做的事。

【讨论】:

    【解决方案2】:

    当按下后退按钮时,textview 和 edittext 应该隐藏 当我再次按下时,

    @Override
    public void onBackPressed() {
       if (title.getVisibility() != View.VISIBLE && 
                 userInput.getVisibility() != View.VISIBLE) {
          super.onBackPressed();
          return;
       }
       title.setText(null);
       userinput.setText(null);
       title.setVisibility(View.INVISIBLE);
       userinput.setVisibility(View.INVISIBLE);        
     }
    

    【讨论】:

      【解决方案3】:

      把代码改成下面

      @Override
      public void onBackPressed() {
      if (title.getVisibility() != View.VISIBLE && 
                   userInput.getVisibility() != View.VISIBLE){
      title.setVisibility(View.INVISIBLE);
      userinput.setVisibility(View.INVISIBLE); 
      }
      super.onBackPressed();
      }
      

      【讨论】:

        猜你喜欢
        • 2012-01-15
        • 1970-01-01
        • 1970-01-01
        • 2014-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-01
        • 1970-01-01
        相关资源
        最近更新 更多