2015-12-31 43 views
-2

这里是MainActivity.java文件。我收到错误notes.add(set);找不到合适的方法添加(设置<String>)

package inandroid.jeetna.appnotes; 

import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import java.util.ArrayList; 
import java.util.HashSet; 
import java.util.Set; 

public class MainActivity extends AppCompatActivity { 

    static ArrayList<String> notes = new ArrayList<>(); 
    static ArrayAdapter arrayAdapter; 
    static Set<String> set; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 

     ListView listView = (ListView) findViewById(R.id.listView); 

     SharedPreferences sharedPreferences = this.getSharedPreferences("inandroid.jeetna" + 
       ".appnotes", Context.MODE_PRIVATE); 

     set = sharedPreferences.getStringSet("notes", null); 

     notes.clear(); 

     if(set!=null){ 
      notes.add(set); 
     }else{ 
      notes.add("Testing data default note"); 
      set = new HashSet<String>(); 
      set.addAll(notes); 
      sharedPreferences.edit().putStringSet("notes", set).apply(); 
     } 

     arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, 
       notes); 
     listView.setAdapter(arrayAdapter); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       Intent in = new Intent(getApplicationContext(), EditYourNote.class); 
       in.putExtra("noteId", i); 
       startActivity(in); 
      } 
     }); 




    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.add) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

这里的错误信息是:

Error:(55, 18) error: no suitable method found for add(Set<String>) 
method ArrayList.add(int,String) is not applicable 
(actual and formal argument lists differ in length) 
method ArrayList.add(String) is not applicable 
(actual argument Set<String> cannot be converted to String by method invocation conversion) 
method AbstractList.add(String) is not applicable 
(actual argument Set<String> cannot be converted to String by method invocation conversion) 
method AbstractList.add(int,String) is not applicable 
(actual and formal argument lists differ in length) 
method AbstractCollection.add(String) is not applicable 
(actual argument Set<String> cannot be converted to String by method invocation conversion) 

回答

1

使用notes.addAll(set)代替notes.add(set)。此方法用于集合追加。

+0

它适用于我。谢谢。这是正确的方式吗? –

+1

是的,这样可以将兼容收藏添加到其他收藏。 – nkit

0

使用此

static ArrayList<Set<String>> notes = new ArrayList<>(); 
+0

我仍然得到相同的错误 –

+0

其实我猜'set'的问题。 –

+0

你不能在String Arraylist中添加Set ,你已经将ArrayList更改为Set ,这就是我所理解的。 –

相关问题