无法调用第二个Activity

时间:2012-06-07 21:21:56

标签: android

大家好,并提前感谢你的任何答案。

我遇到的问题是我的第二个活动名为“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> 

谢谢你的帮助。

5 个答案:

答案 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>

如果您仍然无法做到这一点,请告诉我。