あるアクティビティから別のアクティビティに移動したい(仮想デバイスを使用)。移動するボタンをクリックすると、エミュレータはunfortunately SMS1 has stopped working
(SMS1は私のアプリ名です)。
誰かが私のコードを修正するのを手伝ってくれますか?
MainActivity.Java:
package com.example.sms1;
import Android.os.Bundle;
import Android.app.Activity;
import Android.content.Intent;
import Android.view.Menu;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;
import Android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener
{
Button b1;
TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.button1);
tv1 = (TextView) findViewById(R.id.textView1);
b1.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent i = new Intent(getApplicationContext(),NextActivity.class);
startActivity(i);
setContentView(R.layout.avtivity_next);
}
}
NextActivityがあります
package com.example.sms1;
import Android.os.Bundle;
import Android.app.Activity;
import Android.view.Menu;
import Android.widget.TextView;
public class NextActivity extends Activity {
TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.avtivity_next);
tv1 = (TextView) findViewById(R.id.textView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Manifest.XML
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.sms1"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="17" />
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.example.sms1.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
NextActivityLayout
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".NextActivity" >
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="next activity" />
</RelativeLayout>
MainActivity Layout
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/hello_world" />
<Button
Android:id="@+id/button1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_below="@+id/textView1"
Android:layout_marginTop="80dp"
Android:layout_toRightOf="@+id/textView1"
Android:text="Button" />
</RelativeLayout>
AndroidManifest.xml
ファイルにNextActivity
を定義していません。
これらの行をAndroid manifest after</activity>
タグに追加します。動作するはずです。
<activity
Android:name=".NextActivity" >
</activity>
最終コードは
<application
Android:allowBackup="true"
Android:icon="@drawable/app_icon"
Android:label="@string/app_name" >
<activity
Android:name=".MainActivity"
Android:label="Main Activity" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:name=".NextActivity" >
</activity>
</application>
最初このコードはMainActivity.Javaクラスで使用する必要があります
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent i = new Intent(getApplicationContext(),NextActivity.class);
startActivity(i);
}
この方法でインテントを渡すことができます。
2番目
manifest.xml
ファイルに適切なエントリを追加します。
<activity Android:name=".NextActivity" />
どうなるか見てみましょう。
Manifest.XML
ファイルにNextActivity
を追加するだけです
<activity
Android:name="com.example.sms1.NextActivity">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
</intent-filter>
</activity>
activity2のbutton1
アクティビティ2で記述されたコード
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
// starting background task to update product
Intent fp=new Intent(getApplicationContext(),activity1.class);
startActivity(fp);
}
});
これは役立つかもしれません
1)この(メイン)アクティビティのonCreate()のように、次のアクティビティのonCreate()メソッドにsetContentView(R.layout.avtivity_next);
を配置する
2)your-appsマニフェストファイルでnext-activityを定義していない場合は、次のようにこれも実行します。
<application
Android:allowBackup="true"
Android:icon="@drawable/app_icon"
Android:label="@string/app_name" >
<activity
Android:name=".MainActivity"
Android:label="Main Activity" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:name=".NextActivity"
Android:label="Next Activity" >
</activity>
</application>
新しいアクティビティを作成するたびに2番目のステップを実行する必要があります。そうしないと、アプリがクラッシュします
Android 2つのファイルで行われた変更で1つのページから別のページに移動する必要がある場合
Intent intentSignUP = new Intent(this,SignUpActivity.class);
startActivity(intentSignUP);
以下のようなandroidManifestファイルにアクティビティを追加します
<activity Android:name=".SignUpActivity"></activity>
以下のコードは、Android 4.3:
Intent i = new Intent(this,MainActivity2.class);
startActivity(i);
これは主に、マニフェストファイルに「NextActivity」として未登録のアクティビティがあるためです。
<activity Android:name=".NextActivity">
必要な場所でコードを使用します
Intent intent=new Intent(MainActivity.this,NextActivity.class);
startActivity(intent);
nextActivityを呼び出す必要があります。
JavaクラスのAndroidマニフェストファイルを登録する
その後、ボタンをクリックしてこのコードを記述します
startActivity(new intent(MainActivity.this,NextActivity.class));
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent intent = new Intent(Activity1.this,Activity2.class);
startActivity(intent);
}
まず、マニフェストでアクティビティを宣言する必要があります。大事です。このようにアプリケーション内にこれを追加できます。
public void onClick(View v)
{
startActivity(new Intent(getApplicationContext(), Next.class));
}
2番目のアクティビティを直接移動する方法であり、呼び出しの意図は必要ありません
setContentView(R.layout.avtivity_next);
このコード行は次のアクティビティに移動する必要があると思います...