1

Androidプロジェクトで別のページを開くために別のボタンを取得しようとしていますが、ボタンの1つだけが新しいページを開いています。

私はプログラミングが初めてなので、用語が正しくないかもしれませんが、YouTube のチュートリアルに従っていて、ボタンを作成して新しいページを開く方法を示しました。複数のボタンに対してこれを実行しようとしましたが、メインのアクティビティで間違いを犯していると思います。問題の解決に役立つ書き込み情報を提供していない場合は申し訳ありません。

package test.activity.today;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle; 
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ActivityTutorialActivity extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button next = (Button) findViewById(R.id.next_button);
    next.setOnClickListener(new OnClickListener(){

        public void onClick (View v){
            Intent myIntent = new Intent(v.getContext(), NextActivity.class);
            v.getContext().startActivity(myIntent);

        }               
    });
}

public void onCreate1(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button next = (Button) findViewById(R.id.question_button);
    next.setOnClickListener(new OnClickListener(){

        public void onClick (View v){
            Intent myIntent = new Intent(v.getContext(), Question.class);
            v.getContext().startActivity(myIntent);

        }               
    });
}


public void onCreate2(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button next = (Button) findViewById(R.id.owner_cost);
    next.setOnClickListener(new OnClickListener(){

        public void onClick (View v){
            Intent myIntent = new Intent(v.getContext(), Owner.class);
            v.getContext().startActivity(myIntent);
        }
    });
    }
}
4

3 に答える 3

1

メソッドは 1 つだけにする必要がありonCreate()ます。Androidアクティビティのライフサイクルを確認して理解してください

package test.activity.today;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle; 
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ActivityTutorialActivity extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button next = (Button) findViewById(R.id.next_button);
next.setOnClickListener(new OnClickListener(){

    public void onClick (View v){
        Intent myIntent = new Intent(v.getContext(), NextActivity.class);
        v.getContext().startActivity(myIntent);

    }               
});
Button question = (Button) findViewById(R.id.question_button);
question.setOnClickListener(new OnClickListener(){

    public void onClick (View v){
        Intent myIntent = new Intent(v.getContext(), Question.class);
        v.getContext().startActivity(myIntent);

    }               
});
Button ownerCost = (Button) findViewById(R.id.owner_cost);
ownerCost.setOnClickListener(new OnClickListener(){

    public void onClick (View v){
        Intent myIntent = new Intent(v.getContext(), Owner.class);
        v.getContext().startActivity(myIntent);
    }
});
}

}
于 2012-08-29T00:08:24.260 に答える
0

onClickを実装する別の方法があります。

レイアウトでは、onClickを呼び出す関数を指定できます

<ImageButton
    android:id="@+id/imageButtonNext1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:background="@color/back_color"
    android:onClick="RegistraterCompanyOnClick"
    android:src="@drawable/ic_next" />

次に、アクティビティで、IDでどのボタンをフィルタリングできます。下記参照。

public void RegistraterCompanyOnClick(View v){

    switch(v.getId()){
    case R.id.imageButtonNext1:
        String cname = company.getText().toString();

        if (cname.length()== 0){

            message = getString(R.string.company_required);

            ShowDialog(message);

        }
        else{
            company_name =  company.getText().toString();

            VerifyClient(company_name);
        }

        break;
    case R.id.imageButtonInfo1:
        //message = getString(R.string.registration_info);

        message = "Device ID:\n" + deviceID;

        // TODO Auto-generated method stub
        ShowDialog(message);

        break;
    case R.id.imageButtonHelp1:

        message = getString(R.string.registration_contact);

        // TODO Auto-generated method stub

        ShowDialog(message);
        break;

    case R.id.imageButtonPrevious1:
        Intent resultIntent = new Intent();

        // TODO Auto-generated method stub

        resultIntent.putExtra("company_name",               company.getText().toString());
        resultIntent.putExtra("company_id", companyID);
        resultIntent.putExtra("location_name", location_name);
        resultIntent.putExtra("location_id", locationID);

        setResult(Activity.RESULT_CANCELED, resultIntent);

        finish();
    default:
        break;
    }


}
于 2012-08-29T02:40:25.197 に答える
0

メソッドを複製していonCreate()ます...このメソッドはAndroidによってネイティブに呼び出されるため、他のメソッドは呼び出されません(そうであれば他の問題が発生します)。複数のボタンを作成するには、新しいボタンをレイアウトに追加してから に追加する必要がありますonCreate()

于 2012-08-29T00:10:28.953 に答える