2015-02-05 2 views
-3

Я занимаюсь секцией «Начать другую деятельность» в учебнике Android, и она просто не будет работать, когда я ее установлю и протестирую.Android Hello World Tutorial останавливается при тестировании

Он компилируется отлично, но его запуск прерывается после нажатия кнопки отправки.

Я использую инструменты командной строки на Ubuntu 12.04 и устанавливаю на реальное устройство - свою Galaxy S5.

Я знаю logcat, но не смог заставить его работать, он либо вообще не показывает выход, либо дает массивный спам вывода, с которым я не могу идти в ногу. Я бы с радостью предоставил информацию о logcat, если мне удастся изолировать вывод моего приложения и прорезать все остальное.

Я видел много похожих вопросов по этому поводу, что заставляет меня полагать, что учебник не очень хорошо написан.

Вот "MyActivity.java"

package com.example.myfirstapp; 

import android.app.Activity; 
import android.os.Bundle; 
import android.content.Intent; 
import android.widget.EditText; 
import android.view.View; 

public class MyActivity extends Activity 
{ 
    public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE"; 

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

    /** Called when the user clicks the send button */ 
    public void sendMessage(View view) 
    { 
     Intent intent = new Intent(this, DisplayMessageActivity.class); 
     EditText editText = (EditText) findViewById(R.id.edit_message); 
     String message = editText.getText().toString(); 
     intent.putExtra(EXTRA_MESSAGE, message); 

     startActivity(intent); 
    } 
} 

Вот DisplayMessageActivity

package com.example.myfirstapp; 

import android.app.Activity; 
import android.os.Bundle; 
import android.content.Intent; 
import android.support.v7.app.*; 
import android.view.*; 
import android.widget.*; 
import com.example.myfirstapp.R; 

public class DisplayMessageActivity extends ActionBarActivity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     //Get the message from intent 
     Intent intent = getIntent(); 
     String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE); 

     //Create the text view 
     TextView textView = new TextView(this); 
     textView.setTextSize(40); 
     textView.setText(message); 

     //Set the text view as the activity layout 
     setContentView(textView); 
    } 
} 

Вот AndroidManifest.xml

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

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

     <activity 
      android:name="MyActivity" 
      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.example.myfirstapp.DisplayMessageActivity" 
      android:label="@string/title_activity_display_message" 
      android:parentActivityName="com.example.myfirstapp.MyActivity"> 

      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.myfirstapp.MyActivity" 
      /> 
     </activity> 

    </application> 
</manifest> 

EDIT: Вот main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
> 

<EditText android:id="@+id/edit_message" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="@string/edit_message" 
/> 

<Button 
    android:layout_weight="1" 
     android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send" 
    android:onClick="sendMessage" 
/> 

</LinearLayout> 

Был код, который я изменил и вынул, как он сказал, чтобы добавить код, но потом позже появится «это то, что должен выглядеть ваш код», и в нем отсутствовал некоторый исходный код. Я также изменил имена пакетов манифеста в действиях, поскольку в начале он использует com.example.myfirstapp, но позже использует com.mycompany.myfirstapp

Любая помощь или совет по поводу того, почему это, казалось бы, простое учебное пособие не работает, очень ценится.

EDIT:

Logcat выход - (после нажатия на кнопку отправки)

I/Timeline(3812): Timeline: Activity_launch_request id:com.example.myfirstapp time:74636924 
D/AndroidRuntime(3812): Shutting down VM 
E/AndroidRuntime(3812): FATAL EXCEPTION: main 
E/AndroidRuntime(3812): Process: com.example.myfirstapp, PID: 3812 
E/AndroidRuntime(3812): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.DisplayMessageActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
E/AndroidRuntime(3812): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658) 
E/AndroidRuntime(3812): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2725) 
E/AndroidRuntime(3812): at android.app.ActivityThread.access$900(ActivityThread.java:172) 
E/AndroidRuntime(3812): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) 
E/AndroidRuntime(3812): at android.os.Handler.dispatchMessage(Handler.java:102) 
E/AndroidRuntime(3812): at android.os.Looper.loop(Looper.java:145) 
E/AndroidRuntime(3812): at android.app.ActivityThread.main(ActivityThread.java:5834) 
E/AndroidRuntime(3812): at java.lang.reflect.Method.invoke(Native Method) 
E/AndroidRuntime(3812): at java.lang.reflect.Method.invoke(Method.java:372) 
E/AndroidRuntime(3812): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388) 
E/AndroidRuntime(3812): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183) 
E/AndroidRuntime(3812): Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
E/AndroidRuntime(3812): at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:151) 
E/AndroidRuntime(3812): at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:138) 
E/AndroidRuntime(3812): at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123) 
E/AndroidRuntime(3812): at com.example.myfirstapp.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:16) 
E/AndroidRuntime(3812): at android.app.Activity.performCreate(Activity.java:6221) 
E/AndroidRuntime(3812): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
E/AndroidRuntime(3812): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611) 
E/AndroidRuntime(3812): ... 10 more 
I/Process (3812): Sending signal. PID: 3812 SIG: 9 
I/ActivityManager( 871): Process com.example.myfirstapp (pid 3812)(adj 13) has died(104,205) 
+0

вы можете добавить styles.xml в папку значений. – mustafasevgi

+0

где находится слушатель для первого действия для некоторых действий (отправить). – Shriram

+0

Опубликовать трассировку стека .. –

ответ

0

Try на этом примере кода я сделал для вас.

mainactivity.xml Код

<EditText 
android:id="@+id/edtMessage" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:hint="message" 
/> 
<Button 
android:id="@+id/btnSend" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Send" 
/> 

MainActivity.class

Кнопка btnSend; EditText edtMessage;

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    edtMessage=(EditText)findViewById(R.id.edtMessage); 
    btnSend=(Button)findViewById(R.id.btnSend); 

    btnSend.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
     String Message=edtMessage.getText().toString(); 
     Intent intent=new Intent(getApplicationContext(),Second.class); 
     intent.putExtra("Message", Message); 
     startActivity(intent); 

     } 
    }); 

} 

second.xml

<TextView 
android:id="@+id/tviMessage" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:textColor="#000000" 
/> 

Second.class

TextView tviMessage;

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second); 
    tviMessage=(TextView)findViewById(R.id.tviMessage); 

    Bundle extras = getIntent().getExtras(); 
    String message = extras.getString("Message"); 
    tviMessage.setText(message); 
    } 

Манифест.XML

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".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=".Second" 
     android:label="@string/app_name" > 
    </activity> 
+0

Этот код выглядит многообещающим, но он меняет мой оригинал совсем немного, особенно принимая такие вещи, как кнопка отжимает от XML и в Java, из того, что я видел, XML является рекомендуемым методом. Как это отличается? – Arcana

+0

актуальность, которую вы не упомянули в своем вопросе, что вы действительно хотите. Теперь вы говорите эти слова .... – Amitsharma

+0

это помогло вам ..... – Amitsharma

-1

Используя LogCat с этой командой:

adb logcat | grep `adb shell ps | grep com.example.myfirstapp | cut -c10-15` 

Я был в состоянии найти ошибку, вызывая приложение к краху. Это произошло из-за отсутствия строки:

android:theme="@style/Theme.AppCompat.Light" 

В файле Manifest.xml. Это требуется классом совместимости панели действий. Эта часть была полностью упущена в учебнике, по-видимому, потому, что IDE выполняют эту роль автоматически.

Спасибо всем за помощь и предложения, это помогло мне продолжать искать и пытаться, пока я наконец не нашел свое решение.

1

Вот рабочий код:

MainActivity.class

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.EditText; 

public class MainActivity extends ActionBarActivity { 

    EditText et; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     et = (EditText) findViewById(R.id.editText1); 
    } 

    public void Go(View v) 
    { 
     Log.d("check", "Pressed"); 

     String value = et.getText().toString(); 
     Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
     intent.putExtra("key", value); 
     startActivity(intent); 
    } 
} 

SecondActivity.class

import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.util.Log; 
import android.widget.TextView; 

public class SecondActivity extends ActionBarActivity { 

    TextView textv; 

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

     String txt = getIntent().getStringExtra("key"); 
     Log.d("check", "got : " +txt); 

     textv = (TextView) findViewById(R.id.textView1); 
     textv.setText(txt); 

    } 

} 

Рез/макет/activity_main.xml

<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" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.testproject.MainActivity" > 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="40dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="67dp" 
     android:layout_marginTop="46dp" 
     android:ems="10" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:onClick="Go" 
     android:text="Button" /> 

</RelativeLayout> 

Рез/расположение/new_a ctivity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="74dp" 
     android:text="Large Text" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

</RelativeLayout> 

AndroidManifest.xml

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".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=".SecondActivity"></activity> // Registered the newly created activity 

    </application> 

Выход:

enter image description here

enter image description here

Logcat:

enter image description here

BY ВИДЕТЬ СВОЮ LogCat, у меня есть проблема в вашей теме.

Вы не объявили AppTheme в AndroidManifest.xml file

android:theme="@style/AppTheme" 
Смежные вопросы