繁体   English   中英

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

[英]Button Start New Activity cannot start?

我已经用API 15中的目标SDK在Eclipse中创建了应用程序。 我想让按钮开始新的活动。 我已经创建了该代码,但是我遇到了问题。 当我在电话9隐身2上运行时,当我单击一个按钮并且我的应用程序崩溃时,我的电话向我显示了以下内容:

“不幸地开始”

我已经在其他两个电话中测试过它,并且显示出相同的问题。 我还使用了更多从newboston学到的技术,vongella还有其他技术,但仍然存在相同的问题。 这是我的.xml和Java代码:-

  1. menu.java
 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

包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> 

我的应用程序有什么问题?

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

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

我认为使用Application的上下文更好,并且不会引起问题。

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

  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 ”时,它将采用正确的函数。

尝试,

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

代替

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

我的朋友一定会成功的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM