2013-03-25 42 views
0

我是全新的android开发,并且在开关设置为关闭后,我无法使editText不可编辑。问题是开关功能不起作用。即使设置为关闭,我仍然可以编辑文本。 这里是我的代码:如何使android编辑文本在开关关闭时不可编辑?

public void onCreate(Bundle savedInstanceState) { 
     this.getWindow().setSoftInputMode(
       WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_profile); 
     final View switch1 = (Switch) findViewById(R.id.editSwitch); 
     final EditText mEdit = (EditText) findViewById(R.id.bioTxt); 
     switch1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       if (switch1.getContext().toString().equals("On")) { 

        mEdit.setEnabled(true); 
       } 

       else if (switch1.getContext().toString().equals("Off")) { 

        EditText mEdit = (EditText) findViewById(R.id.bioTxt); 
        mEdit.setEnabled(false); 
       } 
      } 
     }); 

    }; 
} 
+1

什么在这里不起作用? – 2013-03-25 02:41:52

+0

开关功能不起作用。即使设置为关闭后,我仍然可以编辑文本。 – user2206030 2013-03-25 02:42:33

+0

删除else语句中的EditText行。 – 2013-03-25 02:42:51

回答

2

Switch有一个函数isChecked(),如果开关处于'On'位置,它将返回true。因此,您的onClick方法可以是:

public void onClick(View v) { 
    mEdit.setEnabled(switch1.isChecked()); 
} 
+0

好的谢谢!但它的方法isChecked()未定义。 – user2206030 2013-03-25 03:08:16

+0

@ user2206030 - 确保switch1的类型是'Switch',而不是'View'。 – ianhanniballake 2013-03-25 03:48:00

+0

我正在使用相对布局,文本视图和开关xml是: - – user2206030 2013-03-25 04:08:34

0
switch1.getContext().toString() 

什么是你想在这里做什么?视图上的getContext返回拥有它的活动。它不会返回任何会变成“开”或“关”的内容。你需要调用一些其他功能。我不确定哪一个,因为它看起来像是一个自定义的视图。

+0

我有一个文本编辑的视图,并且我想禁用在开关设置为关闭时输入虚文编辑的功能。 – user2206030 2013-03-25 02:48:06

+0

是的,但我不知道你的交换机是什么类型的视图以及它有什么功能。我所知道的是,你绝对不想在那里调用getContext。 – 2013-03-25 03:11:46

+0

我使用的是相对布局,与文本视图和开关代码是:<开关 \t \t机器人:ID = “@ + ID/editSwitch” \t \t机器人:layout_width = “WRAP_CONTENT” \t \t机器人:layout_height = “WRAP_CONTENT” \t \t机器人:layout_below = “@ + ID/Webstietxt” \t \t机器人:layout_alignParentRight = “真” \t \t的android:文本= “编辑模式”/> – user2206030 2013-03-25 03:31:15

相关问题