按钮开始新活动无法启动?

时间:2013-06-28 12:30:16

标签: java android

我已经在eclipse中使用API​​ 15和目标sdk创建了应用程序。我想让按钮开始新的活动。我已经创建了该代码,但我遇到了问题。当我在我的手机上运行ninetology stealh 2时,当我点击一个按钮并且我的应用程序崩溃并且我的手机显示我:

“不幸的是开始”

我已经在其他手机中测试了它,它显示了同样的问题。我也使用了更多的技术,我从新波士顿学习,vongella另一个但仍然有相同的问题。这是我的.xml和java代码: -

  1. menu.java
  2. package com.mytuturkiu.mytuturkiu;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;                                                                                                                                                                                                                       
    import android.widget.Button;
    import android.content.Intent;
    
        public class Menu extends Activity {
    
          Button btnmodul;
    
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_menu);
    
              btnmodul = (Button)findViewById(R.id.btnmodul);      
                btnmodul.setOnClickListener(new View.OnClickListener() {
    
                  @Override
                  public void onClick(View v) {
              // TODO Auto-generated method stub
                  Intent vokal = new Intent(v.getContext(),Modul_Vokal.class);
                  startActivity(vokal);
              }
          } );
    
      }
    
    
    
    }
    
    1. Modul_vokal.java
    2.   

      包com.mytuturkiu.mytuturkiu;

      import android.os.Bundle;
      import android.app.Activity;
      import android.view.Menu;
      
      public class Modul_Vokal extends Activity {
      
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_modul__vokal);
        }
      
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.modul__vokal, menu);
            return true;
        }
      
      }
      
      1. 的AndroidManifest.xml

        <uses-sdk
            android:minSdkVersion="14"
            android:targetSdkVersion="15" />
        
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.mytuturkiu.mytuturkiu.Menu"
                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.mytuturkiu.mytuturkiu.Modul_Vokal"
                android:label="@string/title_activity_modul__vokal" >
            </activity>
        
        </application>
        

      2. 我的应用有什么问题?..

3 个答案:

答案 0 :(得分:1)

您不应该v.getContext() ...您应该使用getApplicationContext() ..

视图v是您点击的视图。因此v.getContext()返回视图运行的上下文。这是问题所在。

我认为使用应用程序的上下文更好,不会导致问题。

答案 1 :(得分:0)

您可以在班级中添加如下函数:

  public class Menu extends Activity {

  Button btnmodul;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_menu);

      btnmodul = (Button)findViewById(R.id.btnmodul);      
      btnmodul.setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v) {
            // CALL THE FUNCTION
            startMyActivity();
          }
      } );

  }

  private void startMyActivity(){
         Intent vokal = new Intent(this,Modul_Vokal.class);
         startActivity(vokal);
  }

}

该函数位于您的活动上下文中,当您在Intent构造函数中放入“ this ”时,它将采用正确的函数。

答案 2 :(得分:0)

尝试,

 Intent vokal = new Intent(getApplicationContext(),Modul_Vokal.class);
              startActivity(vokal);

取代,

   Intent vokal = new Intent(v.getContext(),Modul_Vokal.class);
              startActivity(vokal);

这肯定会对我的朋友有用。