1

大家好,提前感谢您的任何回答。

我遇到的问题是我的第二个活动“Calander.class”没有从我的主要活动“ShiftSelection”中调用。我一般是编码和 android 新手,我只是想学习基础知识,但这个问题真的难倒我。我已将 Activity 添加到 Manifest 文件中,并认为我正确调用了 Intent,但是在运行我的 Button 的应用程序 onClick 时,它应该调用第二个 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> 

感谢您的任何帮助。

4

5 回答 5

3

在您的意图中getApplicationContext(),尝试使用它而不是

Intent intent = new Intent (this, Calendar.class);

也许这对你有帮助

于 2012-06-07T21:43:41.653 回答
1

你得到你的按钮不正确。通过这样做,您将 onClick 侦听器分配给一个永远不可见的按钮。

而不是做

Button openButton = new Button(this);

您应该尝试通过以下方式在现有布局中找到按钮

Button openButton = (Button)findViewById(R.id.openButton);  

替换R.id.openButton为您在R.layout.shiftselection布局文件中分配按钮的任何 ID

你现在做的方式是创建一个新按钮,然后永远不会将它附加到布局,所以它永远不会显示

于 2012-06-07T21:24:57.717 回答
0

另一个可能有帮助的想法:使用按钮视图的 onClick 属性。您可以将其设置为应用程序范围内的任何方法的名称,尽管在与视图关联的 Activity 中使用方法是最常见的。方法签名是

公共无效方法名(视图 v)

于 2012-06-07T23:53:09.727 回答
0

试试这个

Intent intent = new Intent(ShiftSelection.this, Calander.class);
于 2012-06-08T06:23:08.950 回答
0

我得到了三个你需要的变化 2 活动和 1 清单


在ShiftSelection.java Activity中替换此代码

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>

让我知道您是否仍然无法执行此操作。

于 2012-06-08T19:05:01.567 回答