不能在活动之间切换

问题描述:

对不起,要求哑提问,Java和Android都是我的新手;)不能在活动之间切换

我的问题:我不能在一个非常简单的应用程序中的两个活动之间切换。我尝试了类似主题中描述的解决方案,但没有奏效。

所以这是我的第一个活动(我没贴进口):

public class OneActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

public void OnStart(){ 
    Button Btn = (Button)findViewById(R.id.btnNext);  
    Btn.setOnClickListener(new OnClickListener() { 

     public void onClick(View Button) { 

    Intent myIntent = new Intent(OneActivity.this, UserInput.class); 
    OneActivity.this.startActivity(myIntent); 

     } 

}); 
} 

}

第二个活动是非常简单 - 它只是应该加载一个名为userinput布局。 XML:

public class UserInput extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.userinput); 

}

}

清单的应用部分看起来像以下:

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 

    <activity 
     android:name=".OneActivity" 
     android:label="@string/app_name" > 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 


     <activity 
      android:name=".UserInput" 
      android:label="@string/app_name" /> 


    </activity> 
</application> 

当我运行应用程序,并单击按钮没有任何反应。哪里可能是问题?

//好了,我已经把代码放到onCreate()方法,因此现在看起来像以下:

public class OneActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button Btn = (Button)findViewById(R.id.btnNext);  
    Btn.setOnClickListener(new OnClickListener() { 

     public void onClick(View Button) { 

    Intent myIntent = new Intent(OneActivity.this, UserInput.class); 
    OneActivity.this.startActivity(myIntent); 

     } 

}); 
} 

}

现在应用程序崩溃(强制关闭),我随时点击下一个按钮。

+0

我希望在另一个内定义一个活动不会帮助你。 – 2012-02-09 13:13:12

检查它下面的行

Intent myIntent = new Intent(OneAvtivity.this, SecondActivity.class); 
startActivity(myIntent); 

你的类名是UserIpnout和你写SecondActivity.class

Intent myIntent = new Intent(OneAvtivity.this, UserInput .class); 
startActivity(myIntent); 
+0

只是一个复制粘贴错误,抱歉。从错误的应用复制了一部分。已编辑原始帖子 – Droidman 2012-02-09 13:03:18

+0

把你的按钮点击监听器代码在onCreate而不是onStart()并检查,让我看看main.xml文件和userinput.xml文件 – bindal 2012-02-09 13:06:18

你有资本 'O' 定义在onStart()函数。这就是为什么该功能从未被调用。

你在onStart():

public void OnStart(){ ... } 

应该如何:

// Note the lowercase 'o' in onStart 
public void onStart(){ ... } 

还要注意的是具有函数名以上的@覆盖时要覆盖的方法将有助于防止使这些错误,比如Eclipse(或者你使用的任何IDE)会告诉你,你实际上并没有重写一个函数。

可以在onCreate()把所有的代码,简化这样

startActivity(new Intent(this, UserInput.class)); 

但我不明白为什么你开始另一项活动是这样

下面的代码写在onCreate()方法:

Button Btn = (Button)findViewById(R.id.btnNext);  
    Btn.setOnClickListener(new OnClickListener() { 

     public void onClick(View Button) { 

    Intent myIntent = new Intent(OneActivity.this, UserInput.class); 
    startActivity(myIntent); 

     } 

}); 
为Android清单文件

第2修正:

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 

    <activity 
     android:name=".OneActivity" 
     android:label="@string/app_name" > 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity>      <!-- closed here --> 

     <activity 
      android:name=".UserInput" 
      android:label="@string/app_name" /> 



</application> 
+1

嘿非常感谢,现在它的工作!但是你能告诉我为什么第二项活动是在活动标签之外定义的吗? – Droidman 2012-02-09 13:24:24

+0

@ Maver1ck无论何时您创建任何活动,您都必须在AndroidManifest.xml文件中声明该活动。而第二个活动标签用/>符号而不是关闭。 ** FYI,结束标记与/>和都是相同的。** – 2012-02-09 13:33:28

+0

啊好的,谢谢。还有一个问题:当我编辑main.xml文件时,我可以在XML和图形布局之间切换,但是当编辑我创建的任何其他xml文件时,我无法使用图形布局查看结果我的工作..有没有办法使用可视化编辑器为我的XML文件? – Droidman 2012-02-09 13:49:54