我在使用按钮启动新活动时遇到问题。
我已经检查了以前与我的问题相关的问题,其中一个问题几乎相同,但解决方案对我来说没有用。所以这是我的问题。
我有2个活动,一个名为Acilis,第二个是MainActivity,
因此,当应用程序启动时,Acilis.class启动并且有两个按钮,它假设在单击按钮后启动MainActivity.class。点击应用程序崩溃后。这是我的代码
清单:
<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)
它的错误案例太长了,发布了一些内容。
谢谢你们!
答案 0 :(得分:2)
ileri.setOnClickListener(new View.OnClickListener() {
此行会导致NullPointerException
类中的MAinActivity
因为您正在访问布局资源而未调用 MainActivity 的setContentView()
中的onCreate()
方法。
放setContentView(R.layout.activity_main);
super.onCreate(savedInstanceState);
onCreate()
之后。
答案 1 :(得分:0)
Intent intent;
intent = new Intent(Acilis.this, MainActivity.class);
startActivity(intent);
答案 2 :(得分: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);
}
});
希望这会给你一些解决方案。
答案 3 :(得分: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" />
答案 4 :(得分:0)
在清单文件中删除MainActivity的intent过滤器
答案 5 :(得分:-1)
只需改变它:
Intent intent = new Intent("com.example.workbench.MAINACTIVITY");
成:
Intent intent = new Intent(Acilis.this, MainActivity.class);
startActivity(intent);
并从清单文件中删除MainActivity活动的意图过滤器。
答案 6 :(得分:-1)
请从android清单中删除意图过滤器
<intent-filter>
<action android:name="com.example.workbench.MAINACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
创建方法中的资源分配
请把这一行检查一下,
intent = new Intent(Acilis .this, MAINACTIVITY.class);
startActivity(intent)