应用程序在“startActivity(intent);”上崩溃[复制]
Posted
技术标签:
【中文标题】应用程序在“startActivity(intent);”上崩溃[复制]【英文标题】:App crashes on "startActivity(intent);" [duplicate] 【发布时间】:2018-06-28 16:43:37 【问题描述】:我想在“buttonn()”函数中使用的“inntent()”函数中启动一个新的Activity。该应用程序运行良好,但是当我单击按钮触发意图时,应用程序每次都会崩溃。我尝试了不同的方式来启动意图并更改了 Manifest 中的一些内容,但它仍然不起作用。
这是我的 MainActivity.java 代码:
public class MainActivity extends AppCompatActivity
private BottomNavigationView bottomNavigationView;
ListView list;
private TextView textView;
ImageButton floatButton;
static String category;
static String name;
Button button;
ArrayList<String> aaaa;
ArrayList<String> bbbbb;
ArrayList<String> cccc;
ArrayList<String> dddd;
ArrayList<String> display;
public static int[] pics = R.drawable.no, R.drawable.yes;
Context context;
public void add()
aaaa.add("Example");
aaaa.add("Example");
aaaa.add("Example");
bbbb.add("Example");
bbbb.add("Example");
bbbb.add("Example");
cccc.add("Example");
cccc.add("Example");
dddd.add("Example");
dddd.add("Example");
dddd.add("Example");
dddd.add("Example");
public void changeDisplay(ArrayList<String> a)
display.clear();
for (int m = 0; m < a.size(); m++)
String ep = a.get(m);
display.add(ep);
public void inntent()
Intent intent = new Intent(context, GoalsActivity.class);
intent.putExtra("category", category);
intent.putExtra("name", name);
startActivity(intent);
public void butonn(View view)
inntent();
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
context = this;
category = "aaaa";
name = "";
aaaa = new ArrayList<String>();
bbbb = new ArrayList<String>();
cccc = new ArrayList<String>();
dddd = new ArrayList<String>();
display = new ArrayList<>();
add();
changeDisplay(aaaa);
list = (ListView)findViewById(R.id.list_view);
list.setAdapter(new CustomAdapter(this, display, pics));
bottomNavigationView = (BottomNavigationView)findViewById(R.id.BottomaNavigationBar);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener()
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item)
if (item.getItemId() == R.id.wg)
changeDisplay(aaaa);
category = "aaaa";
((CustomAdapter) list.getAdapter()).notifyDataSetChanged();
else if (item.getItemId() == R.id.qg)
changeDisplay(bbbb);
category = "bbbb";
((CustomAdapter) list.getAdapter()).notifyDataSetChanged();
else if (item.getItemId() == R.id.challenges)
changeDisplay(cccc);
category = "cccc";
((CustomAdapter) list.getAdapter()).notifyDataSetChanged();
else if (item.getItemId() == R.id.more)
changeDisplay(dddd);
category = "dddd";
((CustomAdapter) list.getAdapter()).notifyDataSetChanged();
return false;
);
floatButton = (ImageButton)findViewById(R.id.imageButton);
floatButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Toast.makeText(MainActivity.this, "TEST", Toast.LENGTH_SHORT).show();
);
这是我的清单:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".SplashActivity"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".GoalsActivity"
android:screenOrientation="portrait"></activity>
</application>
【问题讨论】:
能不能把异常的logcat贴出来? 发布错误显示在 logcat 和您的GoalsActivity
类中。
发布您的 xml 和崩溃日志。
【参考方案1】:
在 onCreate 方法中给出下面的代码。
button.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent intent = new Intent(MainActivity.this, GoalsActivity.class);
intent.putExtra("category", category);
intent.putExtra("name", name);
startActivity(intent);
【讨论】:
this
如何在Intent
中工作?你能解释一下吗?
这个关键字代表当前活动。你也可以这样写 Intent intent = new Intent(MainActivity.this,GoalsActivity.class); intent.putExtra("category", category); intent.putExtra("name", name);开始活动(意图);
在这种情况下,您在匿名类中使用了this
,因此this
将指向OnClickListener
而不是Activity
。在 AS 中尝试此代码,它会显示错误。以上是关于应用程序在“startActivity(intent);”上崩溃[复制]的主要内容,如果未能解决你的问题,请参考以下文章