2012-11-30 40 views
1

第一 - 对不起,如果我的问题有点哑,我是全新的Android开发...新到Android开发 - 着开始新的活动

我试图从开始一个新的活动我的“ LAUNCHER“活动并在模拟器上运行它,但每次点击”下一步“按钮(这应该开始我的第二个活动)时,我会收到一条错误消息:”不幸的是,Omis挂机自由已停止“,然后关闭应用程序... 也,当我在模拟器中重新启动相同的应用程序,而无需从Eclipse重新安装它,它甚至不显示我的第一个屏幕...

我甚至没有知道我的问题在哪里,所以我附上了5个代码:

第1'活动布局(名为 “activity_open”)

<?xml version="1.0" encoding="utf-8" ?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".OpenActivity" 
    android:background="#DCDCDC" > 

    <LinearLayout 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:gravity="center" 
     android:layout_weight="30" > 

     <TextView 
      android:id="@+id/tvEnterName" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:gravity="center" 
      android:text="@string/stEnterName" 
      android:textSize="24sp" /> 

    </LinearLayout> 
    <LinearLayout 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:gravity="center" 
     android:layout_weight="40" > 

     <EditText 
      android:id="@+id/etNameInput" 
      android:layout_width="250dp" 
      android:layout_height="fill_parent" 
      android:background="#FFFFFF" 
      android:focusableInTouchMode="true" 
      android:gravity="center" 
      android:hint="@string/stHintNameEnter" 
      android:singleLine="true" /> 

    </LinearLayout> 
<LinearLayout 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:gravity="center" 
    android:layout_weight="30" > 

<Button 
    android:id="@+id/bNext" 
    android:layout_width="75dp" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:text="@string/stNext" 
    android:textSize="24sp" /> 
</LinearLayout> 

</LinearLayout> 

第1'活动类(名为 “OpenActivity”)

package com.omi.hangmanfree; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Color; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class OpenActivity extends Activity { 

TextView tvEnterYourName; 
EditText etName; 
Button bContinue; 
String myName, tmp; 
final String errorStr = "\nYou must enter a name!"; 

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

    initialize(); 

    bContinue.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      myName = etName.getText().toString(); 

      if(etName.getText().toString().equals("") == true) 
      { 
       tvEnterYourName.setText(tmp + errorStr); 
       tvEnterYourName.setTextColor(Color.RED); 
      } 
      else 
      { 
       try { 
        Intent gameIntent = new Intent("com.omi.hangmanfree.GAMEACTIVITY"); 
        startActivity(gameIntent); 
       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } 
    }); 
} 

private void initialize() { 
    // TODO Auto-generated method stub 
    tvEnterYourName = (TextView)findViewById(R.id.tvEnterName); 
    etName = (EditText)findViewById(R.id.etNameInput); 
    bContinue = (Button)findViewById(R.id.bNext); 
    myName = "~"; 
    tmp = tvEnterYourName.getText().toString(); 
} 



@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 

    finish(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_open, menu); 
    return true; 
} 

} 

第2'活动类(名为 “GameActivity” ) package com.omi.hangmanfree;

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.GridView; 
import android.widget.TextView; 

public class GameActivity extends Activity { 

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

    GridView gvGrid = (GridView)findViewById(R.id.gvHagdara); 
    tt.setText("_"); 
    gvGrid.addView(tt); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_game, menu); 
    return true; 
} 

} 

第2'活动布局(名为 “layout_game”)

<?xml version="1.0" encoding="utf-8" ?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".GameActivity" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="@string/hello_world" /> 

<GridView 
    android:id="@+id/gvHagdara" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_below="@+id/textView1" 
    android:layout_centerInParent="false" 
    android:numColumns="auto_fit" > 

</GridView> 

</RelativeLayout> 

5.清单

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.omi.hangmanfree" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".OpenActivity" 
     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=".GameActivity" 
     android:label="@string/title_activity_game" > 
     <intent-filter> 
      <action android:name="com.omi.hangmanfree.GAMEACTIVITY" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

我不是找代码改进(我只学习语言),所以请不要发送给我改进代码的建议(我知道有很多!)---我只是想让这段代码工作。

+0

什么是logcat的说? – vodich

+0

由于您是新手:在Eclipse中打开LogCat视图以获取堆栈跟踪并将其发布到此处。 – WarrenFaith

+0

logCat说: – omi

回答

4

问题可能出在意图上。试试这个:

Intent gameIntent = new Intent(OpenActivity.this, GameActivity.class); 
+0

可以吗?我现在的代码有什么问题? –

+0

没有帮助...相同的problam – omi

+0

发布你的logcat跟踪来查看你得到的异常。 –

0

请openActivity取代

Intent gameIntent = new Intent(getApplicationContext(), GameActivity.class); 
startActivity(gameIntent); 
2

请从onPause()方法从OpenActivity删除finish();和GameActivity删除gvGrid.addView(tt);因为GridView控件不是容器布局和下面写代码

Intent gameIntent = new Intent(OpenActivity.this, GameActivity.class); 
startActivity(gameIntent); 

而不是

Intent gameIntent = new Intent("com.omi.hangmanfree.GAMEACTIVITY"); 
startActivity(gameIntent); 

它会解决你的问题。

+0

tnx为关于gridview的提示,但它并没有帮助我的问题...同样的错误 – omi

+0

@omi添加此代码行tt =(TextView)findViewById(R.id.textView1);在tt.setText(“_”)之前,它会解决你的问题。 –

+0

是的!谢谢!那是个问题... – omi

0

尝试改变这里:

  Intent gameIntent = new Intent("com.omi.hangmanfree.GAMEACTIVITY"); 
      startActivity(gameIntent); 

   Intent gameIntent = new Intent(OpenActivity.this, GameActivity.class); 
       startActivity(gameIntent);