2013-07-31 45 views
0

我有一个问题,我寻求一点,但我不明白为什么它追加...类型的表达式必须是一个数组类型,但它解决了长期

如果有人能帮助我。

public class Menu extends Activity 
{ 
private SQLiteDatabase db; 

private GridView grid; 
private Button add; 
private Button info; 
private Button deco; 

private String lab[]; 
private String id[]; 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.menu); 

    grid = (GridView) findViewById(R.id.grid); 
    add = (Button) findViewById(R.id.add_account); 
    info = (Button) findViewById(R.id.info); 
    deco = (Button) findViewById(R.id.deconnexion); 

    add.setOnClickListener(add_listener); 
    info.setOnClickListener(info_listener); 
    deco.setOnClickListener(deco_listener); 

    try 
    { 
     db = openOrCreateDatabase("TMP_TTTT_TLA", MODE_PRIVATE, null); 
    } 
    catch(SQLiteException e) 
    { 
     Toast.makeText(Menu.this, "Impossible d'avoir accès à la base de donnéee.", Toast.LENGTH_LONG).show(); 
    } 

    Cursor c = db.rawQuery("SELECT a_id, a_name FROM Account", null); 

    lab = new String[c.getCount()]; 
    id = new String[c.getCount()]; 
    int i = 0; 

    if (c.getCount() != 0) 
    { 
     if (c.moveToFirst()) 
     { 
      do 
      { 
       lab[i] = c.getString(c.getColumnIndex("a_name")); 
       id[i] = c.getString(c.getColumnIndex("a_id")); 
       i++; 
      } 
      while(c.moveToNext()); 
     } 
    } 

    c.close(); 

    grid.setAdapter(new Adapter_Menu(this, lab)); 
    grid.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView parent, View v, int position, long id) 
     { 
      Intent x = new Intent(Menu.this, Account_View.class); 
      x.putExtra("Id", id[position]); 
      startActivity(x); 
     } 
    }); 
} 
} 

来自该行的问题:

x.putExtra("Id", id[position]); 

这是说的类型的表达式必须是一个数组类型,但它解析为长。

请帮助我。

+0

你可以添加stacktrace与异常消息吗? – micha

回答

4

的问题是,你有两个变量名为id:

private String id[]; 

long id 
onItemClick

只要改变你的onItemClickListener以下几点:

public void onItemClick(AdapterView parent, View v, int position, long anid) 
    { 
     Intent x = new Intent(Menu.this, Account_View.class); 
     x.putExtra("Id", id[position]); 
     startActivity(x); 
    } 

请注意,您的onItemClick最后一个参数的名称。

+0

+1当一个类字段和一个参数具有相同的名称时,该参数优先于该方法的上下文。这就是为什么_“不那么漂亮”的替代方法是使用'this.id'来引用数组和'id'来引用long。 – Gamb

+0

Wahou ...真的不要这么想......非常感谢你,请原谅我的注意力分散 – user2029216

相关问题