2015-05-28 2 views
1

Моя группа пытается создать контактный список, контакты которого также могут быть добавлены. Однако они получают следующую ошибку: нестатический метод populatelist() не может быть связан через статический контекст. Однако мы не знаем, будет ли это тогда работать. Любая помощь с оценкойКак исправить нестатистическую ошибку

public class Profile extends Activity { 

    ImageView contactImageImgView; 

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

     Button editProfileButton = (Button) findViewById(R.id.BeditProfile); 
     Button addContactButton = (Button) findViewById(R.id.AdContactButton); 
     //Text ChangeProfilePictureText = (Text) findViewById(R.id.ChangeProfilePicture); 

     String Name = getIntent().getStringExtra("Name"); 
     String eMail = getIntent().getStringExtra("Mail"); 
     String Mobile = getIntent().getStringExtra("Mobile"); 
     String Adress = getIntent().getStringExtra("Adress"); 
     String Bio = getIntent().getStringExtra("Bio"); 


     contactImageImgView = (ImageView) findViewById(R.id.imgViewContactImage); 
     TextView tv_Name = (TextView) findViewById(R.id.Name); 
     TextView tv_Mail = (TextView) findViewById(R.id.Email); 
     TextView tv_Mobile = (TextView) findViewById(R.id.Mobile); 
     TextView tv_Adress = (TextView) findViewById(R.id.Adress); 
     TextView tv_Bio = (TextView) findViewById(R.id.Bio); 

     tv_Name.setText(Name); 
     tv_Mail.setText(eMail); 
     tv_Mobile.setText(Mobile); 
     tv_Adress.setText(Adress); 
     tv_Bio.setText(Bio); 

     if(Cube.fromUnit){ 
      editProfileButton.setVisibility(View.GONE); 
      //ChangeProfilePictureText.replaceWholeText(""); 
      tv_Name.setText(Cube.Name); 
      tv_Mail.setText(Cube.eMail); 
      tv_Mobile.setText(Cube.Mobile); 
      tv_Adress.setText(Cube.Adress); 
      tv_Bio.setText(Cube.Bio); 
     } 

     contactImageImgView.setOnClickListener(new View.OnClickListener() { 

      public void onClick (View v){ // error @ View v, cannot resolve symbol v , expected ; 
       Intent intent = new Intent(); 
       intent.setType("image*/"); 
       intent.setAction(intent.ACTION_GET_CONTENT); 
       startActivityForResult(intent.createChooser(intent, "Select Profile Image"), 1); 
      } 
     }); 
    } 

    @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_maps, 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.menu_home) { 
      Intent i = new Intent(this, HomeScreen.class); 
      startActivity(i); 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    public void onButtonClick(View v) { 
     if (v.getId() == R.id.BeditProfile) { 
      Intent i = new Intent(Profile.this, editProfile.class); 
      startActivity(i); 
     } 

     if (v.getId() == R.id.AdContactButton) { 
      MainActivity.addContact(Cube.Name, Cube.Adress, "", Cube.Mobile, Cube.eMail); 
      MainActivity.populateList(); 
      Toast pass = Toast.makeText(this, Cube.Name + " " + "Has been added to your contacts", Toast.LENGTH_LONG); 
      pass.setGravity(Gravity.BOTTOM|Gravity.CENTER, 0, 10); 
      pass.show(); 
     } 
    } 

    public void onActivityResult(int reqCode, int resCode, Intent data) { 
     if(resCode == RESULT_OK){ 
      if(reqCode == 1) 
       contactImageImgView.setImageURI(data.getData()); 
     } 
    } 
} 

У нас появилась новая авария относительно нашей кнопки «Добавить контакт». В котором говорится, что populateList не может быть выполнен

+0

возможно дубликат [вызывающего не-статический метод в статическом методе в Java] (http://stackoverflow.com/questions/2042813/calling-non-static-method-in-static-method-in-java) –

ответ

6

Вы не можете ссылаться на MainActivity.populateList();, если декларация populateList не является static.
Check JLS (§8.5).

Вы должны создать экземпляр MainActivity

MainActivity ma = new MainActivity(); // or another constructor 
ma.populateList(); // valid call of method 

Или, если вам не нужен экземпляр MainActivity объявить populateList() следующим образом:

public static void populateList() 
+0

Ты работал, они исправили его, но теперь что-то еще (ах хорошо чудеса программирования) – Uridel

+1

проверьте свой код, отлаживайте, а если что-то не так, то ** опубликуйте новый вопрос ** ... не обновляйте этот! !! [Вот почему] (http://meta.stackoverflow.com/questions/260066/drastic-question-revision) –

Смежные вопросы