1

新しいアクティビティを開始するために 3 つのインテントを実行しようとしていますが、常にエラーが発生することがわかりました。コードを main.java コードに配置しています。

public class Main extends Activity {
Button service;
Button gallery;
Button contact;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    service = (Button)findViewById(R.id.Services);
    service.setOnClickListener(new View.OnClickListener() {
    });
    gallery = (Button)findViewById(R.id.Gallery);
    gallery.setOnClickListener(new View.OnClickListener() {
    }); 
    contact = (Button)findViewById(R.id.Contact);
    contact.setOnClickListener(new View.OnClickListener() {
    });


        public void onClick (View v) {
    // Inflate the menu; this adds items to the action bar if it is present.
    Intent intent = new Intent (Main.this, servicesActivity.class);
startActivity(intent);
        }
public void onClick1 (View v) {
    Intent intent1 = new Intent (Main.this, galleryActivity.class);
startActivity(intent1);
}
public void onClick2 (View v) {
    Intent intent2 = new Intent (Main.this, contactActivity.class);
startActivity(intent2);
        }

}
}

私はさまざまな方法を試し、さまざまな場所にブラケットを配置することさえしました。また、私はインターネットで何週間も検索してきましたが、1つ以上で動作するものは何も見つかりませんでした。OnClick と new View.OnClickListener() でエラーが発生しています。私は3つのボタンで同じコードを試した理由です。基本的に、メインの activity.xml に 3 つのボタンがあります。私がやりたいことは次のとおりです。

>'button1 >goes> activity1'
>'button2 >goes> activity2'
>'button3 >goes> activity3'

私はAndroid開発が初めてなので、ヒントやヒントを教えてください。

4

2 に答える 2

3

それらはすべて同じ 内で実行できますlistenerlistenersここまでセット

service.setOnClickListener(this);
gallery.setOnClickListener(this);

次に、1つの機能を使用して、クリックされたidのを確認しますView

public void onClick2 (View v) {
Intent intent = new Intent();
switch (v.getId())  // get the id of the Button clicked
{
   case (R.id.Services):
      intent = new Intent(Main.this, servicesActivity.class);
      break;
   case (R.id.Gallery):
       intent = new Intent(Main.this, galleryActivity.class);
       break;
...
}
startActivity(intent);

実際には、このようなもので変数を繰り返さないようにさらにクリーンアップできます

public void onClick(View v)
{
    Intent intent = new Intent();  // create an Intent
        String act = null;                     // name for Activity to start with Intent
        String shield = "com.your.package.";  // set package name
switch (v.getId())   // get the id of the Button clicked
{
   case (R.id.Services):
      act = package + "Services";  // if Services button clicked use Services as the activity
      break;
   case (R.id.Gallery):
       act = package + "GalleryActivity";
       break;
...
}
try 
{
intent = new Intent(Main.this, Class.forName(act));  // create your Intent by changing your String act to a class name
startActivity(intent);  // start the Intent as normal
}
catch (ClassNotFoundException e){   // don't forget to catch invalid class names
e.printsStackTrace();
}

そしてdymehが指摘したように、あなたのActivity implements OnClickListener

これはおそらくもう少しクリーンアップでき、より難しく見えるかもしれませんが、私はカスタムメニューや他の場所でこのようなものを使用しており、うまく機能しています. 個別の機能を削減し、個別の を作成しIntentsます。後で何かを追加する必要がある場合、またはコードを再利用したい場合は、少し簡単になります。

于 2013-05-28T21:00:02.567 に答える