大家好,并提前感谢你的任何答案。
我遇到的问题是我的第二个活动名为“Calander.class”没有从我的主要活动调用“ShiftSelection”调用。我是编码和Android的新手,我只是想学习基础知识,但这个问题真的让我很难过。 我已将Activity添加到Manifest文件中,并认为我正确调用了Intent,但是在运行应用程序onClick我的Button时应该调用第二个activity并没有做任何事情。
我做错了什么?很抱歉,如果这是一个简单的答案,但我向你保证,我已经尝试过很多个小时尝试不同的事情并且失败了。
我的第一个活动和清单文件的代码如下。
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;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class ShiftSelection extends Activity{
Button openButton;
RadioGroup shiftSelection;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shiftselection);
shiftSelection = new RadioGroup(this);
RadioButton shiftPattern1 = new RadioButton(this); //shiftPattern1 = 4 shift
shiftPattern1.setText("4 shift");
shiftPattern1.setChecked(true);
shiftPattern1.setId(01);
RadioButton shiftPattern2 = new RadioButton(this); //shiftPattern2 = 6 shift
shiftPattern2.setText("4 shift");
shiftPattern2.setId(02);
shiftSelection.addView(shiftPattern1);
shiftSelection.addView(shiftPattern2);
Button openButton = new Button(this);
openButton.setText("open");
openButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), Calander.class);
int genderID = shiftSelection.getCheckedRadioButtonId();
switch(genderID){
case 01:
intent.putExtra("shiftPattern", "1");
break;
case 02:
intent.putExtra("shiftPattern", "2");
break;
}
startActivity(intent);
}
});
}
}
和清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.examples"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".ShiftSelection"
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=".Calander">
</activity>
</application>
</manifest>
谢谢你的帮助。
答案 0 :(得分:3)
在您的意图中,而不是getApplicationContext()
,请尝试使用此
Intent intent = new Intent (this, Calendar.class);
也许这有助于你
答案 1 :(得分:1)
您的按钮不正确。 通过这样做,您将onClick侦听器分配给永远不可见的按钮。
而不是做
Button openButton = new Button(this);
您应该尝试通过
找到现有布局中的按钮Button openButton = (Button)findViewById(R.id.openButton);
将R.id.openButton
替换为您在R.layout.shiftselection
布局文件中为按钮分配的ID
现在你正在创建一个新按钮,然后永远不会将它附加到布局上,因此它永远不会显示
答案 2 :(得分:0)
另一个可能有用的想法:使用Button View的onClick属性。您可以将此设置为应用范围内的任何方法的名称,尽管最常见的是在与View关联的Activity中使用方法。方法签名是
public void methodname (查看v)
答案 3 :(得分:0)
试试这个
Intent intent = new Intent(ShiftSelection.this, Calander.class);
答案 4 :(得分:0)
我在活动中需要2个,在清单中需要1个
在 ShiftSelection.java 活动
中替换此代码Button openButton = new Button(this);
到
Button openButton = (Button)findViewById(R.id.button1);
并更改此行(相同活动的onClick方法)
Intent intent = new Intent(getApplicationContext(), Calander.class);
到
Intent intent = new Intent(ShiftSelection.this, Calander.class);
然后你的 shiftselection.xml 应该有一个这样的按钮
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button Open"></Button>
</LinearLayout>
最重要的是,您需要在 AndroidManifest.xml 文件中为这两个活动创建条目。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.examples"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".ShiftSelection"
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=".Calander"
android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
如果您仍然无法做到这一点,请告诉我。