2016-04-24 1 views
0

Я прочитал много других форумов из других вопросов, связанных с этой проблемой, и до сих пор не могу заставить мой код работать. Я не могу найти что-то не так с моим кодом, но я получаю сообщение об ошибке на задней панели (страница Java) и странице макета.Как заставить мою кнопку открывать вторую активность в Android Studio?

Для страницы Java он говорит: «Не удалось найти метод buttonAbout1 (View) в родительском или предком контексте для Android: OnClick атрибут»

И для страницы макета он говорит: «Method«buttonAbout1 'в' GMOEd 'имеет неправильную подпись. Проверяет, объявлен ли метод, указанный в атрибуте onClick XML, в связанной деятельности "

У меня есть код, показанный ниже.

Спасибо заранее!

Основная деятельность (activity_gmoed)

<Button 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="About" 
     android:id="@+id/buttonAbout1" 
     android:background="#ffffff" 
     android:foregroundTint="#ffffff" 
     android:layout_below="@+id/textView2" 
     android:layout_alignLeft="@+id/textView2" 
     android:layout_alignStart="@+id/textView2" 
     android:onClick="buttonAbout1"/> 

Моя страница Java для основной деятельности (GMOEd.Java)

public class GMOEd extends AppCompatActivity { 

    /** 
    * ATTENTION: This was auto-generated to implement the App Indexing API. 
    * See https://g.co/AppIndexing/AndroidStudio for more information. 
    */ 
    private GoogleApiClient client; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_gmoed); 
     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 
    } 

    private void buttonAbout1() { 
     Button buttonAbout1 = (Button) findViewById(R.id.buttonAbout1); 
     assert buttonAbout1 != null; 
     buttonAbout1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startActivity(new Intent(GMOEd.this,About2.class)); 
      } 
     }); 
     { 


     } 

Manifest Страница:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.gmoed"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".GMOEd"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".About2"></activity> 
     <!-- ATTENTION: This was auto-generated to add Google Play services to your project for 
      App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information. --> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 
    </application> 

</manifest> 

ответ

0

1. Прежде всего, необходимо сделать метод buttonAbout1 общественности.

2.And, то вам нужно пройти View как parameters.Like это

public void buttonAbout1(View v) { 
Button buttonAbout1 = (Button) findViewById(R.id.buttonAbout1); 
assert buttonAbout1 != null; 
    buttonAbout1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(GMOEd.this,About2.class)); 
     } 
    }); 
} 

Вот быстрый наконечник Избегайте делать метод OnClick по yourself.Instead попробуйте использовать действие намерения Android студии (ALT + ENTER), чтобы сгенерировать для вас. Когда вы добавите android: onClick = "buttonAbout1" в xml, затем нажмите ALT + ENTER (убедитесь, что курсор находится на onClick), а затем выберите Create 'buttonAbout1 (View) 'в GMOEd, и это будет crea т. е. метод в вашей деятельности.

Надеюсь, что эта помощь!

1

Попробуйте изменить параметры private void buttonAbout1() выглядит как private void buttonAbout1(View v)

1

Ваш метод buttonAbout1 нуждается в правильной сигнатуре, означает правильные параметры. Вместо этого попробуйте использовать эту строку:

Обновление: О, я просто вижу, вы дважды соединяете свою кнопку с кнопкой onclick. Либо вы делаете это в коде, либо вы к нему в xml. Вот решение для xml. Изменение метода buttonAbout1

private void buttonAbout1(View v) { 
    startActivity(new Intent(GMOEd.this,About2.class)); 
}