2013-06-17 4 views
0

У меня возникла проблема с запуском нового действия с помощью кнопки.Запуск нового действия с помощью кнопки

Я уже проверил предыдущие вопросы, связанные с моей проблемой, один из них почти такой же, но решения для меня не сработали. Итак, вот моя проблема.

У меня есть 2 активности, один называется Acilis, второй MainActivity,

Так что, когда начинается приложение, Acilis.class начинается и есть две кнопки там, его предположим, что для запуска MainActivity.class после нажатия кнопки. После того, как я нажму приложение, произойдет сбой. Вот мой код

Manifest:

<activity 
     android:name="com.example.workbench.Acilis" 
     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.workbench.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="com.example.workbench.MAINACTIVITY" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

Acilis.class

public class Acilis extends Activity{ 

Button erkek, kadin; 
Intent intent = new Intent("com.example.workbench.MAINACTIVITY"); 

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

    erkek = (Button) findViewById(R.id.button_erkek); 
    kadin = (Button) findViewById(R.id.button_kadin); 

    erkek.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub  
      startActivity(intent);  
      setContentView(R.layout.activity_main);   
     } 
    }); 
    kadin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
          startActivity(intent); 
      setContentView(R.layout.activity_main); 
     } 

MainActivity.class

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    sayfa_no = 0; 
    ileri = (ImageButton) findViewById(R.id.button_ileri); 
    geri = (ImageButton) findViewById(R.id.button_geri); 
    fav = (ImageButton) findViewById(R.id.button_fav); 

    ileri.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      sayfa_no++; 
      sayfa.setText(sayfa_no + "/100"); 
     } 
    }); 
    geri.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      sayfa_no--; 
      sayfa.setText(sayfa_no + "/100"); 
     } 
    }); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

Я уже укройтесь моих скобках не волнуйтесь, Eclipse не делайте никаких ошибок. Думаю, я получил семантическую ошибку.

LogCat:

06-17 10:59:41.369: E/AndroidRuntime(15450): FATAL EXCEPTION: main 
06-17 10:59:41.369: E/AndroidRuntime(15450): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.workbench/com.example.workbench.MainActivity}: java.lang.NullPointerException 
06-17 10:59:41.369: E/AndroidRuntime(15450): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
06-17 10:59:41.369: E/AndroidRuntime(15450): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
06-17 10:59:41.369: E/AndroidRuntime(15450): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
06-17 10:59:41.369: E/AndroidRuntime(15450): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
06-17 10:59:41.369: E/AndroidRuntime(15450): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-17 10:59:41.369: E/AndroidRuntime(15450): at android.os.Looper.loop(Looper.java:137) 
06-17 10:59:41.369: E/AndroidRuntime(15450): at android.app.ActivityThread.main(ActivityThread.java:5041) 
06-17 10:59:41.369: E/AndroidRuntime(15450): at java.lang.reflect.Method.invokeNative(Native Method) 
06-17 10:59:41.369: E/AndroidRuntime(15450): at java.lang.reflect.Method.invoke(Method.java:511) 
06-17 10:59:41.369: E/AndroidRuntime(15450): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 

Его слишком долго ошибочный случай, отправил какую-то часть.

Спасибо, ребята!

+4

можно легко понять, что происходит, если вы разместите весь стек ttt – Blackbelt

+0

@blackbelt это намерение намерения = новое намерение («com.example.workbench.MAINACTIVITY»); и в манифестном андроиде: name = "com.example.workbench.MainActivity" не соответствует. Также он вызывает setcontentView (макет) – Raghunandan

+0

, пожалуйста, поместите сообщение об ошибке logcat ' – Hemant

ответ

2
ileri.setOnClickListener(new View.OnClickListener() { 

Эта линия причина NullPointerException в MAinActivity Класса, потому что вы получаете доступ к ресурсу макета без вызывающий setContentView() метод в onCreate() от MainActivity.

Помещенный setContentView(R.layout.activity_main);

после super.onCreate(savedInstanceState); в onCreate() из MainActivity.

+1

Да, хорошо, что это сработало спасибо. Ну, теперь ileri.button дает ошибку, но теперь начинается MainActivity.class! –

+0

Где мой прием? :) – user370305

+0

Извините, что я новичок на этом сайте, здесь =) –

-1

просто изменить его:

Intent intent = new Intent("com.example.workbench.MAINACTIVITY"); 

в:

Intent intent = new Intent(Acilis.this, MainActivity.class); 
startActivity(intent); 

и Удалить фильтр намерений от активности MainActivity из файла манифеста.

+1

, пожалуйста, укажите, почему вы отказали мне в этом. – Riser

+0

Not Down Voter. Но знаете ли вы способы запуска Activity с использованием «Intent»? – user370305

+0

couse, я только что упомянул его ошибку. – Riser

-1

Пожалуйста, удалите на умысел фильтр из андроида manifeast

<intent-filter> 
      <action android:name="com.example.workbench.MAINACTIVITY" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 

ресурс alocation в о создании метода

пожалуйста, поместите эту строку и проверить его,

intent = new Intent(Acilis .this, MAINACTIVITY.class); 
startActivity(intent) 
+0

Нет, не работает. –

0

вы пробовали?

Intent intent; 

intent = new Intent(Acilis.this, MainActivity.class); 
startActivity(intent); 
+0

Да, я уже пробовал это. –

0

Объявите свой setContentView (R.layout.activity_main); в MAINACTIVITY.class.

erkek.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub  
     intent = new Intent(getapplicationcontext() , MAINACTIVITY.class); 
     startActivity(intent);  
     // setContentView(R.layout.activity_main);   
    } 
}); 

Надеюсь, это даст вам некоторое решение.

0

попытка путем удаления фильтров из Acilis деятельности:

<activity 
     android:name="com.example.workbench.Acilis" 
     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.workbench.Acilis" /> 
or 
<activity android:name=".Acilis" /> 
0

Снимите фильтр намерений для MainActivity в файле манифеста