私のAndroidアプリケーションには、2つのアクティビティクラスがあります。最初のボタンにボタンがあり、クリックしたときに2番目のボタンを表示したいのですが、エラーが発生します。これがクラスです:
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button orderButton = (Button)findViewById(R.id.order);
orderButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(FirstActivity.this, OrderScreen.class);
startActivity(intent);
}
});
}
}
ボタンがクリックされたときに表示されるべきですが、決して表示しない2番目のクラスです。
public class OrderScreen extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.order);
Button orderButton = (Button) findViewById(R.id.end);
orderButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}
2番目のアクティビティを表示するボタンをどのように作成しますか?
問題は、OrderScreenActivity
が AndroidManifest.xml に追加されなかったことです。それをアプリケーションノードとして追加すると、正しく機能しました。
<activity Android:name=".OrderScreen" />
この行をAndroidManifest.xmlに追加します。
<activity Android:name=".OrderScreen" />
----FirstActivity.Java -----
package com.mindscripts.eid;
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 FirstActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button orderButton = (Button) findViewById(R.id.order);
orderButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this,OrderScreen.class);
startActivity(intent);
}
});
}
}
---OrderScreen.Java ---
package com.mindscripts.eid;
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;
public class OrderScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second_class);
Button orderButton = (Button) findViewById(R.id.end);
orderButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
---AndroidManifest.xml ----
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.mindscripts.eid"
Android:versionCode="1"
Android:versionName="1.0">
<application Android:icon="@drawable/icon" Android:label="@string/app_name">
<activity Android:name=".FirstActivity"
Android:label="@string/app_name">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity Android:name=".OrderScreen"></activity>
</application>
このコードを使用してください:
Intent intent=new Intent(context,SecondActivty.class);
startActivity(intent);
finish();
コンテキスト:現在のアクティビティのコンテキストを参照
androidのマニフェストファイルにアクティビティを追加したことを確認してください。
次のAndroidマニフェストファイルにアクティビティを追加するためのコード
<Activity name=".SecondActivity">
</Activity>
<activity Android:name="[packagename optional].ActivityClassName"></activity>
切り替えたいアクティビティを単に追加するだけで、マニフェストファイルに配置されます。
b1 = (Button) findViewById(R.id.click_me);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
}
});
Androidファイルでアクティビティを作成するときは、AndroidManifest.xmlで次のように指定する必要があります。
<uses-sdk Android:minSdkVersion="8" />
<application
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name" >
<activity
Android:name=".MyCreativityActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity Android:name=".OrderScreen"></activity>
</application>
マニフェストで
<activity Android:name=".OrderScreen" />
インテントコードを配置しなければならないJavaコード内
startActivity(new Intent(CurrentActivity.this, OrderScreen.class);
マニフェストファイルにアクティビティを追加する
<activity Android:name=".OrderScreen" />
呼び出しを行ったビューのコンテキストを使用できます。例:
Button orderButton = (Button)findViewById(R.id.order);
orderButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(/*FirstActivity.this*/ view.getContext(), OrderScreen.class);
startActivity(intent);
}
});
Intent i = new Intent("com.Android.SubActivity");
startActivity(i);