0

我有两个edittext块+两个按钮(使用savedpreferences),我似乎无法弄清楚如何在两者上使用onclicklistener?我现在有两个按钮,它们需要在 onclicklistener 上进行其他操作。如何更改代码以使其正常工作?

我对android真的很陌生。

主代码

    public class MainActivity extends Activity implements OnClickListener{

    EditText editText;
    EditText editText1;
    Button button;
    Button button1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {        
    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);  
    this.registerReceiver(this.mConnReceiver,
            new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    setContentView(R.layout.activity_main);

    editText = (EditText) findViewById(R.id.editText1);
    button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(this);

    editText1 = (EditText) findViewById(R.id.editText2);
    button1 = (Button) findViewById(R.id.button2);
    button1.setOnClickListener(this);

    loadSavedPreferences();
    loadSavedPreferences1();
}

        private void loadSavedPreferences() {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    String name = sharedPreferences.getString("storedName", "YourName");
    editText.setText(name);
}

private void loadSavedPreferences1() {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    String onderwerp = sharedPreferences.getString("storedOnderwerp", "YourOnderwerp");
    editText1.setText(onderwerp);
}

private void savePreferences(String key, String value) {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
}

private void savePreferences1(String key, String value) {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    Editor editor1 = sharedPreferences.edit();
    editor1.putString(key, value);
    editor1.commit();
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    savePreferences("storedName", editText.getText().toString());

    Toast.makeText(getApplicationContext(), 
            "Meldingtekst is aangepast.", Toast.LENGTH_LONG).show();
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    savePreferences1("storedOnderwerp", editText1.getText().toString());

    Toast.makeText(getApplicationContext(), 
            "Meldingonderwerp is aangepast.", Toast.LENGTH_LONG).show();
}
4

7 回答 7

1

试试下面的代码:

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    if(v==button)
    {
        savePreferences("storedName", editText.getText().toString());    
        Toast.makeText(getApplicationContext(), "Meldingtekst is aangepast.", Toast.LENGTH_LONG).show();
    }

    else if(v==button1)    
    {    
        savePreferences1("storedOnderwerp", editText1.getText().toString());    
        Toast.makeText(getApplicationContext(), "Meldingonderwerp is aangepast.", Toast.LENGTH_LONG).show();
    }
}
于 2013-10-29T11:15:19.747 回答
0

您只需要重写一次 onClick() 方法。像这样写:

@Override

公共无效 onClick(查看 v){

if(v == button)
{
savePreferences("storedName", editText.getText().toString());

Toast.makeText(getApplicationContext(), 
        "Meldingtekst is aangepast.", Toast.LENGTH_LONG).show();
  }
   else if(v == button1)

   {

   savePreferences1("storedOnderwerp", editText1.getText().toString());

Toast.makeText(getApplicationContext(), 
        "Meldingonderwerp is aangepast.", Toast.LENGTH_LONG).show();
 }
 }
于 2013-10-29T11:17:48.507 回答
0

像这样更改您的代码。这是处理按钮点击的优化方式

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
switch(v.getId())
{
case R.id.button1:
    savePreferences("storedName", editText.getText().toString());

    Toast.makeText(getApplicationContext(), 
            "Meldingtekst is aangepast.", Toast.LENGTH_LONG).show();
break;
case R.id.button2:
     savePreferences1("storedOnderwerp", editText1.getText().toString());

    Toast.makeText(getApplicationContext(), 
            "Meldingonderwerp is aangepast.", Toast.LENGTH_LONG).show();
break;
}
于 2013-10-29T11:18:00.187 回答
0

您无需为两个按钮编写两个 onClick(View v),只需将两个放在 onClick(View v) 中即可:

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.button:
 // code for button 1
break;
case R.id.button1:
 // code for button 2
break;
}
}
于 2013-10-29T11:19:42.870 回答
0

它总是更喜欢根据 Java 在 Android 中为 clickLister 创建内部类。

 button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
         savePreferences("storedName", editText.getText().toString());

    Toast.makeText(getApplicationContext(), 
            "Meldingtekst is aangepast.", Toast.LENGTH_LONG).show();
        }
       });

     button2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
         savePreferences("storedName", editText.getText().toString());

    Toast.makeText(getApplicationContext(), 
            "Meldingtekst is aangepast.", Toast.LENGTH_LONG).show();
        }
       });
于 2013-10-29T11:20:24.187 回答
0

尝试这个 :

button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Perform action on click   

                Intent activityChangeIntent = new Intent(MyActivity.this, NextActivity.class);

                 startActivity(activityChangeIntent);


            }
        });
于 2013-10-29T11:14:52.783 回答
0

我认为您需要了解接口的概念才能了解您应该做什么。您可以查看此链接,它将帮助您了解如何使用 onClickListner。

http://martin.cubeactive.com/android-onclicklitener-tutorial/

于 2013-10-29T11:21:23.937 回答