Android - 无法创建从OptionMenu触发的新Intent

时间:2013-08-16 06:29:46

标签: java android android-intent

我是Android开发的新手,在尝试基于This Tutorial

开发简单应用时遇到困难

当用户通过设置菜单(所述应用程序)点击按钮时,我想要的基本上是开始新的意图。

这是我的代码的一部分:

MainActivity.java

这里我收到SET_TIME_REQUEST_ID错误,这是一个未在我的代码中声明的常量。我应该声明它,我不确定常量的类型是什么,我应该分配什么值。

*** REST OF THE CODE ****

private void setTime() {
      Intent i = new Intent(getBaseContext(), CountdownSetTime.class);
      startActivityForResult(i, SET_TIME_REQUEST_ID);    
}

*** REST OF THE CODE ***

CountdownSetTime.java

我对这部分的错误是;无法将 上下文 secondsSet 解析为任何变量。再说一次,我不知道该怎么做。我应该声明一个名为secondsSet的变量吗?如果是,那是什么类型?

*** REST OF THE CODE ***

public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.set_time);

      context = this.getApplicationContext(); // ERROR HERE.
      Spinner spinner = (Spinner) findViewById(R.id.spinner);
      ArrayList<Integer> spinnerList = new ArrayList<Integer>();

      for (int i = MIN; i <= MAX; i++) {
        spinnerList.add(i);
      }

      ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(context,
              android.R.layout.simple_spinner_item, spinnerList);

      adapter.setDropDownViewResource(
              android.R.layout.simple_spinner_dropdown_item);

      spinner.setAdapter(adapter);
      spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> parent,
          View view, int pos, long id) {
          secondsSet = (Integer)parent.getItemAtPosition(pos); // ERROR HERE
        }
        public void onNothingSelected(AdapterView<?> parent) {
          // Do nothing.
        }
    });
}

*** REST OF THE CODE ***

的manifest.xml

我对此绝对无能为力。我不知道如何注册我的新意图。

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.gelliesmedia.countdown.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>
    <activity
        android:name="com.gelliesmedia.countdown.CountdownSetTime"
        android:label="@string/app_name"
        android:parentActivityName="com.gelliesmedia.countdown.MainActivity" >
        <meta-data
             android:name="android.support.PARENT_ACTIVITY"
             android:value="com.gelliesmedia.countdown.MainActivity" />
    </activity>
</application>

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

我已阅读您提供的教程作为链接。该教程没有给出完整的代码。根据我所看到的,你必须定义你提到的变量。

对于SET_TIME_REQUEST_ID,通常会在开头添加类似

的内容
private static final int SET_TIME_REQUEST_ID = 1;

因为onActivityResult(int, int, Intent) 该ID是您的内部身份证明。我把1但你可以输入任何数字。它是一个ID,以便当活动关闭时,您可以获取结果。

所以是的,你必须定义它。

secondsSet相同。

类型似乎是Integer,因为parent.getItemAtPostion已投放到Integer。它被使用但未定义。我似乎是一个全球变量。你放在课堂顶部的那些。

所以是的你还必须定义它: - )

最后context也是如此。它被使用但未声明。看来你使用的教程全局声明了所有这些变量。

修改

清单文件告诉系统存在意图(活动)。

你应该有类似的东西

<activity
    android:name="com.gelliesmedia.countdown.CountdownSetTime">
</activity>