java编辑文本。getText()可能会产生NullPointerException
我的代码过去可以工作,但在添加另一个活动后,它停止了工作。Android Studio告诉我editText。getText()。toString()可能会产生空指针异常。这是工作,没有任何变化,它似乎已经打破
我尝试在onCreate()的最后初始化editText,但没有成功
活动:
package com.jbillote.lolstats.app;
import 安卓.content.Context;
import 安卓.os.StrictMode;
import 安卓.support.v7.app.ActionBarActivity;
import 安卓.os.Bundle;
import 安卓.view.Menu;
import 安卓.view.MenuItem;
import 安卓.view.View;
import 安卓.widget.*;
import 安卓.content.Intent;
import java.util.*;
import net.enigmablade.riotapi.RiotApi;
import net.enigmablade.riotapi.constants.*;
import net.enigmablade.riotapi.exceptions.*;
import net.enigmablade.riotapi.types.*;
import net.enigmablade.riotapi.types.League.Entry;
public class MainActivity extends ActionBarActivity
{
public final static RiotApi api = new RiotApi("c90fafd0-b9da-45c8-8b8e-2fe506d0b8f6");
private Summoner summoner;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.activity_main);
}
@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 super.onCreateOptionsMenu(menu);
//return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch(item.getItemId())
{
case(R.id.action_matchHistory):
try
{
Intent intent = new Intent(this, MatchHistory.class);
intent.putExtra("Summoner", summoner.getName());
startActivity(intent);
return true;
}
catch(RiotApiException e)
{
return false;
}
default:
return super.onOptionsItemSelected(item);
}
}
public void summonerSearch(View view)
{
EditText editText = (EditText) findViewById(R.id.summonerName);
String summonerName = editText.getText().toString();
TextView foundSummoner = (TextView) findViewById(R.id.foundSummoner);
TextView rank = (TextView) findViewById(R.id.rank);
TextView winloss = (TextView) findViewById(R.id.winloss);
try
{
summoner = api.getSummoner(Region.NA, summonerName);
Entry entry = summoner.getLeague(QueueType.RANKED_5V5_SOLO).getEntry(findPlayer(summoner));
PlayerStats rankedSoloStats = rankedSoloStats(summoner);
foundSummoner.setText(summoner.getName());
rank.setText(playerRank(entry) + " " + entry.getLeaguePoints() + " LP");
winloss.setText(rankedSoloStats.getWins() + "W " + rankedSoloStats.getLosses() + "L");
}
catch(RiotApiException e)
{
Context context = getApplicationContext();
CharSequence text = "An error occured while searching for " + summonerName;
int duration = Toast.LENGTH_SHORT;
Toast.makeText(context, text, duration).show();
}
}
private String findPlayer(Summoner summoner) throws RiotApiException
{
return summoner.getLeague(QueueType.RANKED_5V5_SOLO).getParticipantId();
}
private String playerRank(Entry entry)
{
String tierString;
String rankString;
switch(entry.getTier())
{
case TIER_BRONZE:
tierString = "Bronze ";
break;
case TIER_SILVER:
tierString = "Silver ";
break;
case TIER_GOLD:
tierString = "Gold ";
break;
case TIER_PLATINUM:
tierString = "Platinum ";
break;
case TIER_DIAMOND:
tierString = "Diamond ";
break;
case TIER_CHALLENGER:
tierString = "Challenger";
break;
default:
tierString = "Unknown";
break;
}
switch(entry.getRank())
{
case RANK_I:
rankString = "I";
break;
case RANK_II:
rankString = "II";
break;
case RANK_III:
rankString = "III";
break;
case RANK_IV:
rankString = "IV";
break;
case RANK_V:
rankString = "V";
break;
default:
rankString = "";
break;
}
return tierString + rankString;
}
private PlayerStats rankedSoloStats(Summoner summoner) throws RiotApiException
{
List<PlayerStats> playerStats = api.getStatsApiMethod().getCurrentSeasonStatSummaries(Region.NA, summoner.getId());
Iterator<PlayerStats> iterator = playerStats.iterator();
while(iterator.hasNext())
{
PlayerStats temp = iterator.next();
if(temp.getSummaryType().equals(QueueType.RANKED_5V5_SOLO))
{
return temp;
}
}
// TODO Possibly find better solution
return null;
}
}
布局XML
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:paddingLeft="@dimen/activity_horizontal_margin"
安卓:paddingRight="@dimen/activity_horizontal_margin"
安卓:paddingTop="@dimen/activity_vertical_margin"
安卓:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.jbillote.lolstats.app.MainActivity">
<EditText
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/summonerName"
安卓:layout_alignParentTop="true"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignParentRight="true"
安卓:layout_alignParentEnd="true"
安卓:enabled="true"
安卓:hint="Enter Summoner Name"
安卓:textSize="20dp"
安卓:singleLine="true"
安卓:editable="true"/>
<Button
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Search"
安卓:id="@+id/searchButton"
安卓:layout_below="@+id/summonerName"
安卓:layout_centerHorizontal="true"
安卓:singleLine="false"
安卓:onClick="summonerSearch"/>
<TextView
安卓:layout_width="fill_parent"
安卓:layout_height="wrap_content"
安卓:textAppearance="?安卓:attr/textAppearanceMedium"
安卓:id="@+id/foundSummoner"
安卓:layout_below="@+id/searchButton"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignRight="@+id/summonerName"
安卓:layout_alignEnd="@+id/summonerName"
安卓:textAlignment="center"
安卓:gravity="center"/>
<TextView
安卓:layout_width="fill_parent"
安卓:layout_height="wrap_content"
安卓:textAppearance="?安卓:attr/textAppearanceSmall"
安卓:id="@+id/rank"
安卓:layout_below="@+id/foundSummoner"
安卓:layout_alignParentLeft="true"
安卓:layout_alignParentStart="true"
安卓:layout_alignRight="@+id/foundSummoner"
安卓:layout_alignEnd="@+id/foundSummoner"
安卓:gravity="center"/>
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:textAppearance="?安卓:attr/textAppearanceSmall"
安卓:id="@+id/winloss"
安卓:layout_below="@+id/rank"
安卓:layout_centerHorizontal="true"/>
</RelativeLayout>
# 1 楼答案
这不是错误,只是一个警告。静态分析器无法推断您的
EditText
或来自EditText.getText()
的结果不是null
。这里的关键词是“may”为两个实例添加一个(可能不必要的)
null
-检查将使警告消失