2015-09-26 3 views
0

Я разрабатываю приложение, в котором на экране пусковой установки, если мы проверяем переключатель, он должен перенаправляться на активность входа.Ошибка при использовании ключевого слова «this» в явном намерении создания

В классе mainactivity.java во время создания объекта для класса Implicit Intent использование ключевого слова this для получения текущего контекста показывает ошибку. Что является причиной этого ? Что еще мы можем использовать для получения контекста для объекта Intent?

Здесь я включаю код.

public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final RadioGroup radiogroup = (RadioGroup) findViewById(R.id.radiogroup); 
    radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) 
    { 
    RadioButton checkedRadioButton = (RadioButton) findViewById(checkedId); 
    int comp = checkedRadioButton.getId(); 

    if(comp==(R.id.Vitbutton)) 
     Intent i = new Intent(this ,LoginActivity.class); 
     startActivity(i); 

      } 
     } 
    ); 
} 

ответ

3

Изменение:

Intent i = new Intent(this ,LoginActivity.class); 

к:

Intent i = new Intent(MainActivity.this ,LoginActivity.class); 
0

вы можете использовать getApplicationContext()

Intent i = new Intent(getApplicationContext(),LoginActivity.class); 
     startActivity(i); 
0

Таким образом, вы получили некоторые предложения о том, что делать лучше, прежде чем мне. Но я хочу попытаться понять, что не так:

Во-первых: вы проверили, что говорит Eclipse или AS, когда вы наводите на себя ошибку? Он должен сказать, что «конструктор класса Intent не может быть использован для использования с объектом RadioGroup.OnCheckedChangeListener»

Помните, что вы находитесь в определенном классе, а «this» относится к классу, в котором вы сейчас находитесь в И это «RadioGroup.OnCheckedChangeListener». - класс

вы можете получить «это» ссылка экземпляра внешнего класса с «MainActivity.this», как правило, в Java

Greets

0

это используется для обозначения объекта wh если это будет принято.

Вы пытаетесь создать новое намерение в onCheckedChanged интерфейса RadioGroup.OnCheckedChangeListener().

Теперь costructor, что вы используете Intent (Context packageContext, класс ЦБС) НО, когда вы используете это внутри onCheckedChanged вы refereing к интерфейсу не деятельностью, которые содержат его, по этой причине вы видели ошибка.

Таким образом, в этом случае вы можете использовать this.getApplicationContext() или this.getBaseContext()

0

При использовании этого внутри анонимного класса, вы получаете ссылку для этого анонимного класса, а не для основной класс.

В этом случае, когда вы используете «это», вы получаете ссылку для RadioGroup.OnCheckedChangeListener, а не для MainActivity (и Intent нуждается в ссылке для MainActivity).

Таким образом, вы можете исправить это следующим образом:

Intent я = новый Intent (MainActivity.this, LoginActivity.class);

С уважением.

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